一個鎖總是跟着一個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();
}
}
爲什麼有這個try/finally塊,而不是簡單地編寫代碼如下:
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();
}
可能重複的[我們將如何最後使用try.lock.lock和lock.unlock](http:// stackoverflow。com/questions/4664717/how-will-we-use-try-finally-for-lock-lock-and-lock-unlock) – JasonMArcher