java队列同步器,独占式同步状态获取与释放与共享式同步状态获取与释放比较

GODBAR 2017-07-17 11:58:27

《java并发编程的艺术》这本书中说同步器依赖于同步队列,即就是在同步器中维持着一个双向链表的同步队列

独占式同步状态获取与释放,表示同一时刻只能有一个线程成功获取同步状态,在同步队列中只有节点的前驱是头结点,才能尝试获取同步状态。这就保证了每一次只有队列的第一个节点才有资格获取同步状态,保证的多个线程之间的互斥,独占性


但是在共享式同步状态获取与释放中,共享的意思是同时允许多个线程获取同步状态,但是书中说,(如果当前节点的前驱为头结点时,尝试获取同步状态,如果返回值大于等于0,表示该次获取同步状态成功并且从自旋过程中退出;此时同样是串行的怎么实现同时获取的呢?


我的理解是当一个线程获取了同步状态以后,就从同步队列中移除,此时线程还没有执行完也没有释放同步状态,此时由于线程从同步队列中移除了,下一个线程就可以获取同步状态了,虽然上一个线程还没有释放同步状态。而对于独占式来说,必须要等到上一个线程释放同步状态后,下一个线程才能获取。

是这样的吗???????????
...全文
149 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧