[英]Reentrant lock releases automatically in java
有什么方法可以自動釋放重入鎖嗎?不需要在finally塊中解鎖有沒有辦法實現
try{
lock.lock;
}
catch(Exception e){
lock.unlock
}
可以通過注釋來完成,但是也可以使用AutoCloseable
:
import java.util.concurrent.locks.ReentrantLock;
public class LockTry {
public static void main(String[] args) {
new LockTry().testWithLock();
}
private void testWithLock() {
ReentrantLock lock = new ReentrantLock();
try (CloseableLock clock = new CloseableLock(lock)) {
System.out.println("run with lock");
}
}
static class CloseableLock implements AutoCloseable {
private final ReentrantLock lock;
CloseableLock(ReentrantLock lock) {
super();
this.lock = lock;
lock.lock();
System.out.println("locked");
}
@Override
public void close() {
lock.unlock();
System.out.println("unlocked");
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.