【发布时间】:2014-06-07 15:44:45
【问题描述】:
假设我有三个线程,线程 1、线程 2 和线程 3 都共享同一个锁。线程 2 获取锁,做一些工作,然后通过调用 await 方法阻塞。然后线程 1 获得锁,做一些工作,在它的中间,线程 3 尝试获得锁,但由于线程 1 持有它而被阻塞。线程 1 完成工作,并在终止之前向线程 2 发出信号,表明它可以重新获取锁。那么会发生什么呢?接下来是线程 2 还是线程 3 获取锁?
非常感谢您的宝贵时间和提前帮助。
【问题讨论】:
-
AFAIK,当调用
nofity()或notifyAll()时,没有规定指定哪个等待线程将获得锁。因此,在您的示例中,线程 2 或线程 3 可以获得下一个锁。 docs.oracle.com/javase/8/docs/api/java/lang/…
标签: java multithreading locking