tryLock()
可能無法獲取鎖定。因此,如果我們使用返回值進行工作,我們可能根本就沒有做這項工作。tryLock()在循環?
Lock lock = new ReentrantLock();
boolean isLocked = lock.tryLock();
if (isLocked) {
try {
doWork();
} finally {
lock.unlock();
}
}
一個將阻塞,直到鎖被收購,所以我們知道doWork()
將最終完成。
那麼,是不是正確的,我們應該tryLock()
一個循環中,直到獲取鎖?
boolean isLocked = false;
while (!isLocked) {
isLocked = lock.tryLock();
Thread.sleep(100);
}
if (isLocked) {
try {
doWork();
} finally {
lock.unlock();
}
}
,如果你得到了鎖你應該肯定睡不着。 – EJP