wait即object的wait()和notify()或者notifyall()一起搭配使用
wait方法会将当前线程放入wait set等待被唤醒
1.将当前线程封装成objectwaiter对象node
2.通过objectmonitor::addwaiter方法将node添加到_WaitSet列表中
3.通过ObjectMonitor:exit方法释放当前的ObjectMonitor对象,这样其他竞争线程就可以获取该ObjectMonitor对象
4.最终底层的park方法会挂起线程
notiry方法就是随机唤醒等待池中的一个线程
博客介绍了Object的wait()和notify()或notifyall()搭配使用的原理。wait方法会将当前线程放入wait set等待唤醒,具体步骤包括封装线程为objectwaiter对象、添加到_WaitSet列表、释放ObjectMonitor对象,最后挂起线程;notify方法则随机唤醒等待池中的一个线程。

1077

被折叠的 条评论
为什么被折叠?



