1.两个原子操作组合到一块不一定是能保证原子性

ConcurrentLinkedQueue

AtomicInteger  两个类都为线程安全的类,但是组合起来并不能保证原子性:

 public static ConcurrentLinkedQueue concurrentLinkedQueue = new ConcurrentLinkedQueue();public static AtomicInteger atomicInteger =new AtomicInteger();public boolean put (Object object){if("1000".equals(String.valueOf(atomicInteger))){System.out.println("队列已满");return false;}try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}concurrentLinkedQueue.add(object);atomicInteger.incrementAndGet();return true;}public Object get(){if("0".equals(String.valueOf(atomicInteger)))return null;Object poll = concurrentLinkedQueue.remove();atomicInteger.decrementAndGet();return  poll;}public static void main(String[] args) {ThreadPoolExecutor threadPool = new ThreadPoolExecutor(2, 4, 3, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(3),new ThreadPoolExecutor.DiscardOldestPolicy());Centor centor = new Centor();for(int i=0;i<3;i++){threadPool.execute(new Runnable() {@Overridepublic void run() {int i=0;while (true){centor.put(i++);System.out.println(Thread.currentThread().getName()+"数量"+atomicInteger);}}});}
....
pool-1-thread-2数量967
pool-1-thread-1数量967
pool-1-thread-2数量969
pool-1-thread-1数量969
pool-1-thread-2数量971
pool-1-thread-1数量971
pool-1-thread-2数量973
pool-1-thread-1数量973
pool-1-thread-2数量975
pool-1-thread-1数量975
pool-1-thread-1数量977
pool-1-thread-2数量977
pool-1-thread-1数量978
pool-1-thread-2数量979
pool-1-thread-1数量980
pool-1-thread-2数量981
pool-1-thread-1数量983
pool-1-thread-2数量983
pool-1-thread-1数量985
pool-1-thread-2数量985
pool-1-thread-1数量986
pool-1-thread-2数量987
pool-1-thread-2数量989
pool-1-thread-1数量989
pool-1-thread-1数量991
pool-1-thread-2数量991
pool-1-thread-1数量992
pool-1-thread-2数量993
pool-1-thread-2数量994
pool-1-thread-1数量995
pool-1-thread-1数量997
pool-1-thread-2数量997
pool-1-thread-2数量999
pool-1-thread-1数量999
pool-1-thread-2数量1001
pool-1-thread-1数量1001
pool-1-thread-2数量1003
pool-1-thread-1数量1003
pool-1-thread-1数量1004
pool-1-thread-2数量1005
....

两个原子操作组合到一块不一定是能保证原子性相关推荐

  1. 在一表中设置组合主键(两个字段组合成一个主键)

    首先一个表是不能有两个主键的.但是可以有两个字段组合成一个主键,这就是为什么有时候表里为什么会有两个字段都有主键的标志,那是因为他们组合成了一个主键了.          我们可以先删除了原来的主键再 ...

  2. 简单的签到代码_【SAS小恩的代码段】02样本分布、两群体与组合差异性检定

    为了响应停课不停学, 本人在吉林大学的课程教学上会大量使用SAS编程教学.同时本人撰写了两本SAS相关的教材,因此将会录制一连串视频,会以以下的材料陆续发布: ◆ SAS在财务研究中的应用  --&g ...

  3. VUE将两条数据组合成一条数据

    需求是:最后一位是奇数默认和偶数是一对.例如0011 和0012 是一组.请求回来的数据是单条的.我们要组合起来,方便选中.我是让后端返回的时候一对的给一个相同的字段commonId // 模拟请求数 ...

  4. Solr4:查询参数fq的用法(对结果进行过滤;两组关键词组合查询)

    Solr查询参数文档可以参考: http://wiki.apache.org/solr/CommonQueryParameters#head-6522ef80f22d0e50d2f12ec487758 ...

  5. setnx是原子操作吗_谈谈Volatile关键字?为什么不能保证原子性?用什么可以替代?为什么?...

    大家好,欢迎关注我的公众号码猿bug,需要资料的话可以加我微信好友. 再谈volatile关键字之前,首先必须聊聊JMM内存模型! JMM主要的特性:可见性.原子性,顺序性 Java 虚拟机规范试图定 ...

  6. mysql 求两列数据组合_mysql – 将两个具有不同列数的查询组合在一起

    我有两个查询要组合成单个输出,我不能使用UNIOn,因为它们具有不同的列数. 该表是ref,字段id为refid cellid cat,其中包含整数 查询1:查找每个唯一cellid的总行数 SELE ...

  7. 两字典(dict)组合(重复键进行加法)一行命令实现Python

    >>> d1 ={'a': 1, 'b':2} >>> d2 ={'c': 1, 'b':2} >>> {k: d1[k] + d2[k] if ...

  8. 2020年 近期出去面试Java的总结(持续更新)

    近期出去面试Java的总结 一.Java基础 1.Java的类加载顺序 对于有继承关系的加载顺序 2.Java的创建对象的几种方式 1.使用new关键字 2.使用反射机制 1)使用Class类的new ...

  9. Three.js搭配OrbitControls.js实现flyTo()

    需求:较为简单,对3D场景进行OrbitControls自带的拖动缩放功能.在自写一个点击具体3D物体拉近相机的功能,也就是flyTo(). flyTo()是一个动画过程,(想要线上了解效果的可以参考 ...

最新文章

  1. YOLOv5是真的吗?并不比YOLOv4强,不配这个名字
  2. 四则运算第三次冲刺(项目完成)
  3. PLSQL_统计信息系列10_统计信息过旧导致程序出现性能问题
  4. 三星note2+android8.0,放大版Note2 三星Galaxy Note8.0
  5. 打docker镜像_从安全到镜像流水线,Docker 最佳实践与反模式一览
  6. python爬虫实战教程分享 或许你可以看一下这篇文章
  7. 化工计算机软件基础考试题,2013年化工工程师基础知识网友版真题(下午卷)...
  8. java二叉树的序列化_二叉树的序列化和反序列化
  9. ddos攻击数据集_ddos攻击和cc攻击有什么区别?他们2个哪个更厉害?
  10. 【操作系统】—操作系统的概念 目标和功能
  11. 转贴: mysql-5.7.20 编码由 utf8 改为 utf8mb4
  12. 比较 Cache 和虚拟存储器,说明它们的相似点和不同。
  13. springMVC3学习(十)--注解式控制器
  14. git提交过滤target文件 idea_详解如何在IntelliJ IDEA中使用.ignore插件忽略不必要提交的文件...
  15. 51单片机——LED点阵屏
  16. vue中Route和router、routes的关系
  17. 程序员去美国工作:2015年H1B抽签结果与分析
  18. 【Git从青铜到王者】第二篇:Git的初始
  19. iOS Stripe 支付
  20. day13_雷神_前端01

热门文章

  1. 第六十八期:做中台找死,不做中台等死?
  2. java可视化多人群聊,java 网络编程-TCP-多人群聊(自问自答)
  3. java语言中的 继承_Java语言有关继承的总结
  4. HTML DOM之属性的各种操作方法
  5. std::packaged_task() ---C++17 并发编程
  6. 共享锁和排它锁---C++17 多线程
  7. python如何使用字典中的值并进行比较_python嵌套字典比较值与取值的实现示例
  8. python中的sorted是什么意思_python中sort与sorted区别
  9. 不出来信号 quartus_男人一旦动了真情,会向你发出这6个“信号”不爱的人装不出来...
  10. 用python画统计图表_Python数据科学(九)- 使用Pandas绘制统计图表