锁定后总是会出现try/finally块,为什么?
ReentrantReadWriteLock readWriteLockBitmap = new ReentrantReadWriteLock();
Lock read = readWriteLockBitmap.readLock();
Lock write = readWriteLockBitmap.writeLock();
int shared = 0;
public void function1(){
read.lock();
try{
//reading shared int
}
finally{
read.unlock();
}
}
public void function 2(){
write.lock();
try{
//modify shared int
}
finally{
write.unlock();
}
}
为什么要尝试/最终阻止而不是简单地编写如下代码:
ReentrantReadWriteLock readWriteLockBitmap = new ReentrantReadWriteLock();
Lock read = readWriteLockBitmap.readLock();
Lock write = readWriteLockBitmap.writeLock();
int shared = 0;
public void function1(){
read.lock();
//reading shared int
read.unlock();
}
public void function 2(){
write.lock();
//modify shared int
write.unlock();
}
最佳答案
万一出了什么问题(抛出异常等),您无论如何都要确保释放了锁。这只是标准做法,即使从技术上讲在这种情况下也没有必要。
关于java - 线程-为什么必须先尝试锁然后最终锁定,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6950078/