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 也是这样的。

  • 相关阅读:
    shell提交hive sql保存运行过程日志
    hive中 exists与left semi join
    hbase shell 导出数据转json
    ubuntu使用
    fast json
    elasticsearch 用户密码配置
    linux 自带php切换xampp
    Ubuntu查看crontab运行日志
    Linux服务器 XAMPP后添加PHP和MYSQL环境变量
    HBuilder 模拟器
  • 原文地址:https://www.cnblogs.com/zhz-8919/p/10832071.html
Copyright © 2011-2022 走看看