当前位置: 首页 > news >正文

Java多线程不安全的例子

目录

1. 可见性不安全例子

2. 原子性不安全例子

3. 有序性不安全例子 


1. 可见性不安全例子

可见性:一个线程对共享变量的修改,另外一个线程不能够立刻看到。

如果多线程对共享数据进行访问而不采取同步操作的话,那么操作的结果是不一致的。

以下代码演示了 1000 个线程同时对 i执行自增操作,操作结束之后它的值有可能小于 1000。

public class ThreadUnsafeExample {private int i= 0;public void add() {i++;}public int get() {return i;}
}

 

public static void main(String[] args) throws InterruptedException {final int threadSize = 1000;ThreadUnsafeExample example = new ThreadUnsafeExample();final CountDownLatch countDownLatch = new CountDownLatch(threadSize);ExecutorService executorService = Executors.newCachedThreadPool();for (int i = 0; i < threadSize; i++) {executorService.execute(() -> {example.add();countDownLatch.countDown();});}countDownLatch.await();executorService.shutdown();System.out.println(example.get());
}

2. 原子性不安全例子

原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。

3. 有序性不安全例子 

有序性:即程序执行的顺序按照代码的先后顺序执行。

http://www.lryc.cn/news/17521.html

相关文章:

  • vivo X Flip会是高端手机市场的又一折叠屏爆款吗?
  • MySQL中MVCC如何解决不可重复读以及幻读?
  • 设计模式第八讲:观察者模式和中介者模式详解
  • 关于 mac 本地配置域名能 ping 通,但是浏览器不能访问的问题(而其他电脑操作可访问)
  • 【代码随想录二刷】Day23-二叉树-C++
  • Linux GPIO 开发指南
  • 记一次后端生成Zip文件通过浏览器下载后文件损坏,无法打开,不可预知的末端错误,下载后文件比源文件增大
  • python中savgol_filter的详细解释
  • C语言--指针进阶1
  • ssh的使用
  • Apache Hadoop生态-目录汇总-持续更新
  • 「JVM 编译后话」编译器优化技术
  • 【python学习笔记】:输出与输入
  • 汽车电子社区交流宣传
  • String、StringBuilder 和 StringBuffer 详解
  • windows服务器上传文件解决方案
  • Android Studio翻译插件推介(Translation)
  • DNS,DNS污染劫持,DNS加密
  • 【Python】如何度量优秀代码——静态分析工具
  • Open3D 点云高程归一化(基于2维地面点,Python版本)
  • 动态系统的建模与分析
  • QCC51XX---HCI log
  • Redis四 原理篇
  • 从0开始写Vue项目-Vue实现数据渲染和数据的增删改查
  • AI技术的发展,人工智能对我们的生活有那些影响?
  • Unity中的Mathf数学运算讲解(值得收藏)
  • ABBYY FineReader16最新PDF图片文字识别软件
  • Leetcode14. 最长公共前缀
  • JTT808jt1078
  • 数字孪生加持,水利水电工程或将实现全生命周期管理