首页 > 其他 > 详细

park 和 unpark 实现原理

时间:2021-06-21 23:41:38      阅读:29      评论:0      收藏:0      [点我收藏+]

LockSupport.park() 和 LockSupport.unpark() 不用在 synchronized 代码块中调用;如果 unpark 可以在 park 之前执行,则 park 不会等待,而是继续向下执行;还有就是 unpark 唤醒线程更加精确。

每个线程都有自己的一个 Parker 对象,由三部分组成 _counter、 _cond 和 _mutex.

当线程调用 park() 方法时,先检查 _counter,如果为 0,则获得 _mutex 然后进入 _cond 阻塞,最后在设置 _counter = 0;

当别的线程调用 unpark 方法唤醒指定线程时,先将 _counter = 1,然后将 _cond 中阻塞的线程唤醒,最后设置 _counter = 0;

park 和 unpark 实现原理

原文:https://www.cnblogs.com/daihao-g/p/14915817.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!