我注意到下面的代码块:关于多重锁定尝试,使用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