zoukankan      html  css  js  c++  java
  • 并发队列

    ConcurrentLinkedQuere 总结
    ConcurrentLinkedQueue 使用CAS 非阻塞算法实现使用CAS 解决了当前节点与next 节点之间的安全链接和对
    当前节点值的赋值。由于使用CAS 没有使用锁,所以获取size 的时候有可能进行offer,poll 或者remove 操作,导
    致获取的元素个数不精确,所以在并发情况下size 函数不是很有用。另外第一次peek 或者first 时候会把head 指向
    第一个真正的队列元素。
    下面总结下如何实现线程安全的,可知入队出队函数都是操作volatile 变量:head,tail。所以要保证队列线程安
    全只需要保证对这两个Node 操作的可见性和原子性,由于volatile 本身保证可见性,所以只需要看下多线程下如果
    保证对着两个变量操作的原子性。
    对于offer 操作是在tail 后面添加元素,也就是调用tail.casNext 方法,而这个方法是使用的CAS 操作,只有一
    个线程会成功,然后失败的线程会循环一下,重新获取tail,然后执行casNext 方法。对于poll 也是这样的。

  • 相关阅读:
    java中变量命名和引用变量的一个坑
    java(2)之前往对象村
    java的print,printf,println以及输入
    HTML学习开篇
    今后的学习路径
    offline .net3.5
    java
    两个经典的Oracle触发器示例(轉)
    listview1
    Delphi连接Oracle控件ODAC的安装及使用(轉載)
  • 原文地址:https://www.cnblogs.com/zhz-8919/p/10832071.html
Copyright © 2011-2022 走看看