有问题的:

import java.util.concurrent.CountDownLatch;public class AtomicIntegerTest {public int count;public static void main(String[] args) throws InterruptedException {AtomicIntegerTest atomicIntegerTest = new AtomicIntegerTest();int threadCount = 5;CountDownLatch countDownLatch = new CountDownLatch(threadCount);for (int i = 0; i < threadCount; i++) {new Thread(){@Overridepublic void run() {super.run();for (int j = 0; j < 10000; j++) {atomicIntegerTest.count++;}countDownLatch.countDown();}}.start();}countDownLatch.await();System.out.println(atomicIntegerTest.count);}
}

输出结果不稳定,你会发现,好多次都少于50000

使用AtomicInteger

package com.xinyu.test;import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicInteger;public class AtomicIntegerTest2 {public AtomicInteger count = new AtomicInteger(0);public static void main(String[] args) throws InterruptedException {AtomicIntegerTest2 atomicIntegerTest = new AtomicIntegerTest2();int threadCount = 5;CountDownLatch countDownLatch = new CountDownLatch(threadCount);for (int i = 0; i < threadCount; i++) {new Thread(){@Overridepublic void run() {super.run();for (int j = 0; j < 10000; j++) {atomicIntegerTest.count.incrementAndGet();}countDownLatch.countDown();}}.start();}countDownLatch.await();System.out.println(atomicIntegerTest.count);}
}

Java CAS AtomicInteger使用相关推荐

  1. 死磕java并发cas_死磕Java——CAS

    一.死磕Java--CAS 前面我们说到volatile不保证原子性,解决办法就是使用AtomicInteger代替int,但是为什么使用AtomicInteger就可以保证了原子性了,是因为Atom ...

  2. Java CAS底层原理

    Java CAS底层原理 Java CAS底层原理,这一篇就够了!!! CAS全称(Conmpare And Swap)比较并交换,是一种用于在多线程环境下实现同步功能的机制.CAS 操作包含三个操作 ...

  3. Java CAS 原理分析

    1.简介 CAS 全称是 compare and swap,是一种用于在多线程环境下实现同步功能的机制.CAS 操作包含三个操作数 – 内存位置.预期数值和新值.CAS 的实现逻辑是将内存位置处的数值 ...

  4. java cas机制_Java CAS机制详解

    CAS目的: 在多线程中为了保持数据的准确性,避免多个线程同时操作某个变量,很多情况下利用关键字synchronized实现同步锁,使用synchronized关键字修可以使操作的线程排队等待运行,可 ...

  5. java cas原理_Java并发之原子变量及CAS算法-上篇

    Java并发之原子变量及CAS算法-上篇 编辑 ​ 概述 本文主要讲在Java并发编程的时候,如果保证变量的原子性,在JDK提供的类中是怎么保证变量原子性的呢?.对应Java中的包是:java.uti ...

  6. Java CAS 和ABA问题

    2019独角兽企业重金招聘Python工程师标准>>> 独占锁:是一种悲观锁,synchronized就是一种独占锁,会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁. 乐观锁 ...

  7. Java CAS无锁技术深度解析

    在看AQS代码的时候,看到它很多地方调用了unsafe.compareAndSwapInt这类方法,百度了一下得知这叫CAS无锁技术. CAS原理深度分析 转自:https://blog.csdn.n ...

  8. 阿里二面,面试官:说说 Java CAS 原理?

    声明:本文禁止转载 1. 什么是 CAS? 2. CAS 基本原理 3. CAS 在 Java 语言中的应用 4. CAS 的问题 4.1. 典型 ABA 问题 4.2. 自旋开销问题 4.3. 只能 ...

  9. 面试官:说说 Java CAS 原理?

    在并发编程中我们都知道i++操作是非线程安全的,这是因为 i++操作不是原子操作. 如何保证原子性呢?常用的方法就是加锁.在Java语言中可以使用 Synchronized和CAS实现加锁效果. Sy ...

最新文章

  1. Python--数据存储:pickle模块的使用讲解
  2. 用Latex做介绍自己和团队科研的网页
  3. html代码测试1006无标题,无标题Html5页面测试点总结文章
  4. C++学习之路 | PTA乙级—— 1018 锤子剪刀布 (20分)(精简)
  5. 前端基础:学习 ES6 新特性
  6. vuejs路由插件:vue-router的工作原理
  7. 【nginx】【小记】泛解析大量域名的情况下 将不带www的域名,301到与之对应的www前缀的域名
  8. C++ 拆分字符串-copy()
  9. java形参改变实参_java方法改变形参后得到实参值是否改变
  10. 吃糖果hdu2502
  11. python自动化框架pytest pdf_Python自动化测试框架-pytest,python
  12. python中while与else的联姻
  13. 3.3、苏宁百万级商品爬取 代码讲解 商品爬取
  14. java成神之——集合框架之ArrayList,Lists,Sets
  15. -bash: wget 未找到命令的解决办法
  16. 1、CSS 盒子模型,2、边框样式,3、CSS 轮廓(outline),
  17. gbdt算法 java实现_决策树之 GBDT 算法的回归部分
  18. tree traversal (树的遍历) - postorder traversal (后序遍历)
  19. 小米一面经验分享,面试编程题
  20. gnuplot下载地址

热门文章

  1. php百分比乘加,用php简单实现加减乘除计算器
  2. redis3.2.1php扩展,php7.2.1+redis3.2.1 安装redis扩展(windows系统)
  3. java蓝桥杯的题_Java蓝桥杯试题集——算法训练ALGO-116——最大的算式
  4. vue 富文本存储_Vue富文本编辑器
  5. DrawText函数
  6. retrofit2 spring接受参数_Spring面试中有可能遇到的问题
  7. 《effective java》类和对象
  8. 数据结构课本学习 --单链表类定义
  9. 用户界面设计风格说明
  10. Sync 攻击原理及防范技术