volatile变量的运算在并发下一样是不安全的
来源:互联网 发布:北京匡恩网络上市 编辑:程序博客网 时间:2024/04/29 23:26
下面是一段volatile变量自增元算测试:
/** * @title VolatileTest.java * @description volatile变量自增运算测试 * @date 2014-02-28 11:48 * @author lichunan * @version 1.0 */public class VolatileTest {public static volatile int race = 0;public static void increase() {race++;}private static final int THREADS_COUNT = 20;public static void main(String[] args){Thread[] threads = new Thread[THREADS_COUNT];for(int i=0; i<THREADS_COUNT; i++){threads[i] = new Thread(new Runnable() {@Overridepublic void run() {for(int i=0; i < 10000; i++){increase();}}});threads[i].start();}// 等待所有累加线程都结束while(Thread.activeCount() > 1){Thread.yield();}System.out.println(race);}}
这段代码发起了20个线程,每个线程对race变量进行10000次自增操作,如果这段代码能够正确并发的话,最后输出的结果应该是200000。但实际是每次输出的结果都不一样。原因如下:
0 0
- volatile变量的运算在并发下一样是不安全的
- .NET的变量在代码集中是不安全的
- 多线程并发中volatile变量的原理
- 类的静态变量是线程不安全的
- Get是不安全的
- AtomicInteger的并发处理,Volatile修饰的成员变量
- SAFESEH 映像是不安全的
- c语言里面 / % * 运算优先级是一样的 在一起的时候运算是按什么顺序
- solr 在非集群模式下 core和collection是一样的
- 1、关于HashMap在多线程下的不安全分析
- volatile的变量
- Java的volatile变量
- volatile: 变量的理解
- 关于volatile的变量
- c++volatile的变量
- volatile修饰的变量
- Volatile修饰的变量
- Volatile变量的读写
- 2013.2.28
- 路虎:独到所处,揽胜极致.
- 匿名内部类的简单使用
- 路虎:见证新一代发动机.
- WinPE安装64位Win7的方法
- volatile变量的运算在并发下一样是不安全的
- 路虎:雾霾天气应正确对待“三滤”.
- 最短路径算法C代码(D算法和F算法)
- 路虎“行胜于言”,力求打造第一质量.
- android模拟器开启硬件加速
- 女性驾车悉心提醒.
- C#:使用双缓冲让界面绘制图形时避免闪烁
- 计算机网络之思考题(一)
- grails中增加自定义servlet