Fork/Join模式(JSR166y)手记之ConcurrentLinkedDeque

Fork/Join模式(JSR166y)手记之ConcurrentLinkedDeque

ConcurrentLinkedDeque是JSR166y中新增的一个无界并发Deque实现,基于已链接节点的、任选范围的双端队列。在迭代时,队列保持弱一致性,但不会抛出ConcurrentModificationException异常。

需要小心,与大多数 collection 不同,size 方法不是一个固定时间操作。由于这些队列的异步特性,确定当前元素的数量需要遍历这些元素。

另 外,一些批量操作,诸如 addAll, removeAll, retainAll, containsAll, equals, toArray等,不能够保证会立刻执行。比如通过addAll方法批量提交若干元素,于此同时另一线程在迭代时,可能只能访问到先前存在的元素。

内存一致性效果:当存在其他并发 collection 时,将对象放入 ConcurrentLinkedDeque 之前的线程中的操作 happen-before 随后通过另一线程从 ConcurrentLinkedDeque 访问或移除该元素的操作。

先前存在一个线程安全并阻塞的LinkedBlockingDeque实现,现在好了,又多了个并发实现,这样和Queue保持一致,并发和阻塞版本都具有了。嗯,果然是好事要成双。

在使用上没有什么可说的,随时查看API DOC,即可。刚开始以为Fork/Join的工作窃取(work stealing)机制内部使用ConcurrentLinkedDeque实现,查看ForkJoinPool源代码时,不曾发现其身影。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值