本文整理汇总了Java中java.util.concurrent.locks.Lock.lockInterruptibly方法的典型用法代码示例。如果您正苦于以下问题:Java Lock.lockInterruptibly方法的具体用法?Java Lock.lockInterruptibly怎么用?Java Lock.lockInterruptibly使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类java.util.concurrent.locks.Lock
的用法示例。
在下文中一共展示了Lock.lockInterruptibly方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: interruptibleReaderView
import java.util.concurrent.locks.Lock; //导入方法依赖的package包/类
static Reader interruptibleReaderView(final StampedLock sl,
final long timeout,
final TimeUnit unit,
final Phaser gate) {
return new Reader("InterruptibleReaderView") { public void run() {
if (gate != null ) toTheStartingGate(gate);
final Lock rl = sl.asReadLock();
try {
if (timeout < 0)
rl.lockInterruptibly();
else
rl.tryLock(timeout, unit);
stamp(1L); // got the lock
check(sl.isReadLocked());
check(!sl.isWriteLocked());
} catch (Throwable x) { thrown(x);
} finally { if (stamp() != 0L) rl.unlock(); } }};
}
示例2: interruptibleWriterView
import java.util.concurrent.locks.Lock; //导入方法依赖的package包/类
static Writer interruptibleWriterView(final StampedLock sl,
final long timeout,
final TimeUnit unit,
final Phaser gate) {
return new Writer("InterruptibleWriterView") { public void run() {
if (gate != null ) toTheStartingGate(gate);
Lock wl = sl.asWriteLock();
try {
if (timeout < 0)
wl.lockInterruptibly();
else
wl.tryLock(timeout, unit);
stamp(1L); // got the lock
check(!sl.isReadLocked());
check(sl.isWriteLocked());
} catch (Throwable x) { thrown(x);
} finally { if (stamp() != 0L) wl.unlock(); } }};
}
示例3: testTestMethod
import java.util.concurrent.locks.Lock; //导入方法依赖的package包/类
public void testTestMethod() throws Exception {
MyConditionService service = new MyConditionService();
new Thread(service::testMethod).start();
new Thread(service::testMethod).start();
new Thread(service::testMethod).start();
new Thread(service::testMethod).start();
new Thread(service::testMethod).start();
Lock lock = new ReentrantLock(true);
lock.lockInterruptibly();
Thread.sleep(1000 * 5);
}
示例4: call
import java.util.concurrent.locks.Lock; //导入方法依赖的package包/类
/**
* Execute specified callable in lock of specified name.
*
* @param name
* name of the lock to be acquired
* @param callable
* callable to be execute within the named lock
* @return
* return value of the callable
*/
public static <T> T call(String name, Callable<T> callable) {
Lock lock = getLock(name);
try {
lock.lockInterruptibly();
return callable.call();
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
lock.unlock();
}
}
示例5: read
import java.util.concurrent.locks.Lock; //导入方法依赖的package包/类
/**
* Execute specified callable in read lock of specified name.
*
* @param name
* name of the lock to be acquired
* @param callable
* callable to be execute within the named read lock
* @return
* return value of the callable
*/
public static <T> T read(String name, Callable<T> callable) {
Lock lock = getReadWriteLock(name).readLock();
try {
lock.lockInterruptibly();
return callable.call();
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
lock.unlock();
}
}
示例6: write
import java.util.concurrent.locks.Lock; //导入方法依赖的package包/类
/**
* Execute specified callable in write lock of specified name.
*
* @param name
* name of the lock to be acquired
* @param callable
* callable to be execute within the named write lock
* @return
* return value of the callable
*/
public static <T> T write(String name, Callable<T> callable) {
Lock lock = getReadWriteLock(name).writeLock();
try {
lock.lockInterruptibly();
return callable.call();
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
lock.unlock();
}
}
示例7: lockInterruptibly
import java.util.concurrent.locks.Lock; //导入方法依赖的package包/类
public static Locker lockInterruptibly(Lock lock) throws InterruptedException {
lock.lockInterruptibly();
return new Locker(lock);
}