java代码乱序问题
Posted 呢喃的歌声
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java代码乱序问题相关的知识,希望对你有一定的参考价值。
java两个线程互相访问的时候并不能按照你的思路运行,因为执行语句可能有前后快慢之分,比如a=1和flag=true。下面线程B访问的时候 这两个赋值语句不一定按顺序执行
产生这种原因是因为指令重排序造成的。这种重排只会出现在不影响串行的结构下进行指令的优化(去掉等待的气泡,这是一种编译器的自动优化避免过多等待)
此问题在java并发线程实战中也有说明
代码可见性问题(本质还是编译器优化造成值的中间改变)
以上是关于java代码乱序问题的主要内容,如果未能解决你的问题,请参考以下文章
java题:一百万个乱序数字排序,中间有重复的,但由于内存不够,不能一下存储100万个数,怎样才排序?