尝试使用ReetrantLock锁定/解锁时的Java线程锁定(true)

时间:2014-06-29 21:19:35

标签: java multithreading locking deadlock

我在应用程序中遇到ReetrantLock(true)时出现问题,该应用程序会检查两个图像之间的差异,并根据百分比显示相似度。

出于某种原因,我的输入线程以最小百分比读取"类似"调用lock.lock()并且该特定线程无限期地死锁,但我似乎无法弄清楚为什么只有该线程陷入死锁。

在主方法main(String[])中的下面的SSCCE中,内联Thread用于从控制台获取输入,如果我在其中键入任何数字,则正确存储它但是一旦它调用{{ 1}}它无限期地死锁,我不确定为什么因为lock.lock()被告知对调用者线程公平,并试图在他们调用时对它们进行排序。

ReetrantLock

1 个答案:

答案 0 :(得分:1)

一个线程锁定了ReentrantLock而没有释放它。什么"可重入"意思是你可以多次调用lock,但你必须调用unlock()相同的次数。你锁定两次,解锁一次,这样你实际上并没有解锁,因此没有其他进程有机会。