我在应用程序中遇到ReetrantLock(true)
时出现问题,该应用程序会检查两个图像之间的差异,并根据百分比显示相似度。
出于某种原因,我的输入线程以最小百分比读取"类似"调用lock.lock()
并且该特定线程无限期地死锁,但我似乎无法弄清楚为什么只有该线程陷入死锁。
在主方法main(String[])
中的下面的SSCCE中,内联Thread
用于从控制台获取输入,如果我在其中键入任何数字,则正确存储它但是一旦它调用{{ 1}}它无限期地死锁,我不确定为什么因为lock.lock()
被告知对调用者线程公平,并试图在他们调用时对它们进行排序。
ReetrantLock
答案 0 :(得分:1)
一个线程锁定了ReentrantLock而没有释放它。什么"可重入"意思是你可以多次调用lock,但你必须调用unlock()相同的次数。你锁定两次,解锁一次,这样你实际上并没有解锁,因此没有其他进程有机会。