假设我有10个活动线程,只有3个资源(某些东西) 虽然前三个线程获得了资源,我希望所有其他线程试图让资源等待,但唤醒或通知将是十五顺序我的意思是第一个获得等待的线程将是第一个唤醒。 谢谢大家。
答案 0 :(得分:2)
我认为此链接很好地解释了它:https://www.safaribooksonline.com/library/view/java-threads-second/1565924185/ch04s03.html
使用通知时,无法事先决定或确定允许执行哪个线程。我看到了两个解决方案:
答案 1 :(得分:1)
Java通常不会决定这些事情但是如果你使用公平锁定,例如
Lock lock = new ReentrantLock(true);
然后这些线程将按照尝试的顺序获取锁定。这是通过忽略顺序线程将被通知并确保锁定不被采取,除非线程是FIFO队列的下一个。