1 /* 2 * This file is part of Waarp Project (named also Waarp or GG). 3 * 4 * Copyright (c) 2019, Waarp SAS, and individual contributors by the @author 5 * tags. See the COPYRIGHT.txt in the distribution for a full listing of 6 * individual contributors. 7 * 8 * All Waarp Project is free software: you can redistribute it and/or 9 * modify it under the terms of the GNU General Public License as published by 10 * the Free Software Foundation, either version 3 of the License, or (at your 11 * option) any later version. 12 * 13 * Waarp is distributed in the hope that it will be useful, but WITHOUT ANY 14 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 15 * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License along with 18 * Waarp . If not, see <http://www.gnu.org/licenses/>. 19 */ 20 package org.waarp.common.future; 21 22 import org.waarp.common.logging.SysErrLogger; 23 24 import java.util.concurrent.TimeUnit; 25 import java.util.concurrent.locks.ReentrantLock; 26 27 /** 28 * ReentrantLock with a timeout in locking without exception and no exception on 29 * unlock if the thread is not 30 * locking it. 31 */ 32 public class WaarpLock extends ReentrantLock { 33 /** 34 * 35 */ 36 private static final long serialVersionUID = 2715044114949871427L; 37 38 /** 39 * 40 */ 41 public WaarpLock() { 42 } 43 44 /** 45 * @param fair 46 */ 47 public WaarpLock(final boolean fair) { 48 super(fair); 49 } 50 51 /** 52 * Try to lock within the given limit, but do not raized any exception if 53 * not 54 * locked. A complete lock shall be 55 * done using other calls, like simple lock() method. 56 * 57 * @param timeout 58 * @param timeUnit 59 */ 60 public final void lock(final long timeout, final TimeUnit timeUnit) { 61 try { 62 tryLock(timeout, timeUnit); 63 } catch (final InterruptedException e) {//NOSONAR 64 SysErrLogger.FAKE_LOGGER.ignoreLog(e); 65 } 66 } 67 68 @Override 69 public final void unlock() { 70 try { 71 super.unlock(); 72 } catch (final IllegalMonitorStateException ignored) {//NOSONAR 73 SysErrLogger.FAKE_LOGGER.ignoreLog(ignored); 74 } 75 } 76 77 }