关于jmm重排序问题
long before = System.currentTimeMillis(); //语句1
useManyTimeOpt();//耗时操作 //语句2
long useTime = System.currentTimeMillis() - before; // 语句三如上语句,语句1和3存在数据依赖性, 编译器不会对其重排序,但是语句1和2 或者语句2和3不存在数据依赖性,编译器是否会对其重排序。如果不会,因为什么? 如果会,那么以这种方式打印语句执行时间是不是就不行了? 求大神指点
...全文
相关推荐
Java多线程高并发基础篇(六)-JMM重排序规则
JSR-133规范中还讨论了关于notify和interrupt的语义问题。专家团队呼吁读者深入研究这些问题,并向他们提供反馈。这些问题主要关系到JVM实现者可能需要更改他们的实现。
笔记-9、JMM和底层实现原理1
并发下重排序带来的问题在并发环境中,重排序可能导致线程间的可见性问题,使得一个线程看到的数据状态不是其他线程修改后的状态,从而引发错误。9.
细谈java同步之JMM(Java Memory Model)
JVM的即时编译器(JIT)和处理器的优化策略可能会导致指令重排序,但JMM保证了这些优化不会破坏程序的正确性。
Java内存模型JMM浅析
Java内存模型(JMM)是Java虚拟机提供的一种抽象概念,它确保了多线程编程中的关键内存行为一致性,解决了一些与内存可见性和指令重排序相关的问题。JMM的核心目标是为开发者提供一个跨平台的并发编程
深入Java内存模型-JMM
**重排序** - 编译器和处理器为了优化性能,可能会对指令进行重排序。但在JMM中,有特定的规则限制了这种重排序,以确保并发正确性。7.


