java + 线程系列之解决多线程抢占后数据不完整现象(四)
来源:互联网 发布:博时基金公司知乎 编辑:程序博客网 时间:2024/04/29 18:56
为了展示这个现象我依然新建了一个类来展示
//定义了一个count值 让它循环自减1public class DemoThread extends Thread { private static int count = 10000; @Override public void run() { super.run(); for (int i = 0; i < 2500 ; i++) { count -= 1; System.out.println(count); } }}//Main函数中调用private static void showQuestion() { //如果想要解决这个现象 //需要使用到同步关键字---synchronized DemoThread d1 = new DemoThread(); DemoThread d2 = new DemoThread(); DemoThread d3 = new DemoThread(); DemoThread d4 = new DemoThread(); d1.start();//取值为10000 做-1后为9999 //但是还没有输出9999呢,就被抢占走了执行权 // 就会出现9999在9998或者小于9999的数字下面 d2.start();//d2取值为300,在做-1操作后赋值给count时 d3可能也取到了300,做了-1操作 // 那么d2和d3这两次操作实际上只让count减少了1 // 所以可能会在出现四个线程执行完毕,结果大于0的情况 d3.start(); d4.start(); }//输出结果!
//这里就出现了数据缺失的现象 为了解决这一问题 下一节 就要说到一个关键字synchronized
阅读全文
0 0
- java + 线程系列之解决多线程抢占后数据不完整现象(四)
- java多线程采集+线程同步-【多线程数据采集之四】
- java多线程采集+线程同步-【多线程数据采集之四】
- Java学习笔记之线程(四):线程的死锁现象
- Java多线程开发系列之四:玩转多线程(线程的控制2)
- Java多线程开发系列之四:玩转多线程(线程的控制1)
- Java多线程开发系列之四:玩转多线程(线程的控制2)
- Java多线程开发系列之四:玩转多线程(线程的控制1)
- Java多线程系列--“JUC线程池”05之 线程池原理(四)
- Java多线程系列--“JUC线程池”05之 线程池原理(四)
- Java多线程系列--“JUC线程池”05之 线程池原理(四)
- Java多线程之线程池(四)
- Java多线程 之 后台线程(四)
- java多线程(四) 之 线程池入门
- 四.java多线程之常见线程名词解释
- Java多线程系列之线程状态图
- 【Java系列】(四)Java多线程---线程安全
- Java 线程与并发研究系列四(多线程)
- leetcode | Permutations | 利用深度优先(DFS)的方法排列组合列表
- Android运行时权限
- android系统源码目录system/framework下各个jar包的用途
- Android自定义布局属性
- 堆 续1
- java + 线程系列之解决多线程抢占后数据不完整现象(四)
- java后端Spring POST请求
- 关于x210开发板的启动的理解
- JZOJ 1844——数数
- Mycat-server监控服务Mycat-web
- 网络传输协议
- Servlet之请求和响应
- leetcode551. Student Attendance Record I
- Linux命令