notifyAll唤醒线程顺序

notifyAll()方法按照后进先出算法唤醒所有wait状态的线程,即LIFO。

执行完唤醒方法,并不会立即唤醒等待线程,在hotspot中是退出同步块的时候才会去真正唤醒对应的线程。

notifyAll()唤醒过程还使用了monitorexit,当某个线程从wait状态恢复时,要先获取锁,然后再退出同步块,并唤醒最后一个进入wait状态的线程,依次类推。

这些策略都可以通过修改JVM参数来改变。

猜你喜欢

转载自blog.csdn.net/Anenan/article/details/115150596
今日推荐