Jit*_* KS 6 java synchronization java-threads
想象一下,我有3个线程有一个等待条件,第四个线程有一个通知条件.
现在,所有3个等待线程都运行并进入等待状态.完成后,第4个线程运行并调用notify一次.
通知如何确定唤醒哪个线程?它是调用等待第一个线程的线程,最后调用wait的线程,还是基于其他一些条件?
假设wait和notify使用相同的锁.
Gho*_*ica 8
据我所知,没有特殊的簿记 - 意味着选择是"随机"的.
所以说javadoc:
如果任何线程正在等待此对象,则选择其中一个线程被唤醒.选择是任意的,由实施决定.
因此,理论上 JVM实现可能决定制定特定的顺序; 但如图所示 - 默认情况下,您不能指望任何订单.所以你不应该编写依赖于这种特定顺序的代码.
归档时间:
9 年,2 月 前
查看次数:
1070 次
最近记录: