(转)Java并发编程笔记(四)之 Volatile
来源:互联网 发布:大数据在零售业的应用 编辑:程序博客网 时间:2024/06/07 04:39
推荐博客:
Java并发编程:volatile关键字解析
但是在这篇博客中关于解释Volatile的不保证变量操作的原子性,有点问题。
作者用例:
public class Test { public volatile int inc = 0; public void increase() { inc++; } public static void main(String[] args) { final Test test = new Test(); for(int i=0;i<10;i++){ new Thread(){ public void run() { for(int j=0;j<1000;j++) test.increase(); }; }.start(); } while(Thread.activeCount()>1) //保证前面的线程都执行完 Thread.yield(); System.out.println(test.inc); }}
不为10000的原因应该是这样的。自增操作分为三部分:读取inc,inc+1,将inc写入。现假设inc = 10,线程1进行到第二步,此时inc=11,线程1阻塞掉了;切换到线程2执行,
因为被Volatile关键字修饰,此时线程2读取出的inc为11,自增后为13,然后阻塞;切换回线程1,线程1进行第三步,将inc的值写入主存中。
0 0
- (转)Java并发编程笔记(四)之 Volatile
- Java 并发编程 之 volatile(三)
- java并发编程之volatile
- java并发编程之volatile
- Java并发编程 之 volatile
- 深入学习java并发编程:内存模型(四)volatile
- 【Java并发编程】深入分析volatile(四)
- 【Java并发编程】深入分析volatile(四)
- java并发编程(2)--volatile(转)
- Java并发编程:volatile关键字解析(四.深入剖析volatile关键字)
- Java并发编程之五:Volatile关键字(上)
- Java并发编程之六:Volatile关键字(下)
- Java并发编程之volatile变量
- java并发编程之volatile详解
- Java并发编程之volatile关键字解析
- Java并发编程之volatile的理解
- Java并发编程之volatile关键字解析
- Java多线程并发编程之二volatile
- expect交互命令
- Web Service学习笔记
- nyoj 171 聪明的kk
- maven中如何设置编辑级别
- 当前日期加上某个天数为?
- (转)Java并发编程笔记(四)之 Volatile
- 字符串 Anagrams
- 使用angular.bootstrap完成模块的手动加载
- wlanconfig
- Scramble String
- Android 设计的的最佳实践
- How to verify the Playback/Recording on WCD9330 Codec using tinymix commands
- QTextCodec中的setCodecForTr等终于消失了 (Qt5)
- Android动画之:Frame动画