java代码乱序问题

Posted 呢喃的歌声

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java代码乱序问题相关的知识,希望对你有一定的参考价值。

java两个线程互相访问的时候并不能按照你的思路运行,因为执行语句可能有前后快慢之分,比如a=1和flag=true。下面线程B访问的时候 这两个赋值语句不一定按顺序执行

 

产生这种原因是因为指令重排序造成的。这种重排只会出现在不影响串行的结构下进行指令的优化(去掉等待的气泡,这是一种编译器的自动优化避免过多等待)

此问题在java并发线程实战中也有说明

 

代码可见性问题(本质还是编译器优化造成值的中间改变)

 

 

以上是关于java代码乱序问题的主要内容,如果未能解决你的问题,请参考以下文章

java题:一百万个乱序数字排序,中间有重复的,但由于内存不够,不能一下存储100万个数,怎样才排序?

java多线程总结

深入理解Java虚拟机- 学习笔记 - Java内存模型与线程

防止java中的乱序执行

Java多线程有序性-动力节点

java property 配置文件管理工具框架,避免写入 property 乱序