LockSupport
温馨提示:
本文最后更新于 2025年06月02日,已超过 376 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
park()和unpark()
park:阻塞线程
unpark:解除阻塞线程
线程等待、唤醒的方法
- Object中的wait->等待,notify->唤醒线程
- JUC中Condition的await->等待,signal->唤醒线程
- LockSupport类,park->等待,unpark->唤醒线程
wait和notify方法,两个都去掉同步代码块,会抛出 IllegalMonitorStateException 异常
wait放在notify前面,程序无法执行,无法唤醒
总结:
- wait和notify必须在同步代码块或者方法里面,且成对出现使用
- 先wait后notify
park()和unpark()使用
LockSupport 是用来创建锁和其他同步类的基本线程阻塞原语
LockSupport 类使用了一种名为Permit 许可证的概念来做到阻塞和唤醒线程的功能。每个线程都有一个许可,且最多只有1个许可
调用unpark(thread)方法后,就会将thread线程的许可证permit发放,会自动唤醒park线程,即之前 阻塞中的LockSupport.park()方法会立即返回。
- 正常+无锁块要求
- 唤醒与等待的顺序前后皆可
- 成双成对
示例
正文到此结束
- 本文标签: Java
- 本文链接: http://119.91.109.247:8443//article/80
- 版权声明: 本文由张亚东原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权