use*_*949 6 java multithreading
我看到有人 assert !Thread.holdsLock(lock)用来避免死锁.
assert !Thread.holdsLock(lock)
这是什么目的?如果锁定对象由另一个线程持有,那么断言会导致代码立即退出吗?
JB *_*zet 7
该方法的javadoc说:
true当且仅当当前线程在指定对象上保存监视器锁时返回.
true
(强调我的)
因此,断言检查当前线程是否不保持给定锁定对象的监视器锁定.
请注意,断言用于检查不变量,可以禁用.它们不应该用于防止死锁.if应该使用常规测试来做到这一点.
if
归档时间:
13 年,7 月 前
查看次数:
2662 次
最近记录:
7 年,3 月 前