aqs阻塞与非阻塞实现问题
最近在看aqs有不处不解,在acquire时,实际是 LockSupport.park(this);也就是AbstractQueuedSynchronizer,而release时实际是 LockSupport.unpark(s.thread),不太明白这个阻塞操作与非阻塞操作如何做到的,咋一看根本不是在一个对象的??求解
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
LockSupport.park(Object blocker)实际上的还是阻塞当前线程,只是还传递一个blocker对象,赋值在Thread对象的parkBlocker属性上。如果直接调用LockSupport.park()这个方法就没那么复杂了,只是阻塞当前线程。
LockSupport.park()的线程快照
LockSupport.park(Object object)的线程快照