我注意到下面的代碼塊:關於多重鎖定嘗試,使用java.concurrent.ReentrantLock
final Lock s = new ReentrantLock();
for(int i = 0 ; i < 1000 ; i++)
{
s.lock();
System.out.println(i+" :" +s.tryLock()+" ");
}
打印:
0 :true
1 :true
2 :true
3 :true
...
這很奇怪 - 我希望連續鎖失敗,因爲s永遠不會解鎖。
任何inisghts在這裏?
您是否閱讀過ReentrantLock的文檔? http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/locks/ReentrantLock.html – 2012-03-07 22:07:30
線索的名稱是:reentrant – 2012-03-07 22:10:31
所有鎖都是在同一個線程中獲取的所以它是正確的。這是ReentrantLock的設計。當你嘗試在另一個線程中鎖定時,它將爲假 – 2013-02-10 05:46:43