java - 在同步块(synchronized block)内重新排序

标签 java concurrency java-memory-model

是否可以对同步块(synchronized block)内的语句进行重新排序?例如

synchronized(lock) {
   statement1;
   statement2;
}

其中statement1和statement2互不依赖。处理器或编译器能否重新排序这些语句?

谢谢。

最佳答案

是的,如果优化器决定,这些语句可以在 synchronized block 中重新排序。但是它们不能从synchronized中取出。

关于java - 在同步块(synchronized block)内重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6615128/

相关文章:

java - java多线程中的生产者消费者

c# - ConcurrentQueue 持有对象的引用或值? "out of memory"异常

c# - 与多个事件发布者和多线程关联的单个 .NET 事件订阅者

java - volatile关于可见性及时性的详细语义

java - 如何构建 Apache Sling 9

java - Eclipse 3.7 Unresolved Gradle依赖关系错误

java - 从 Java FileInputStream 中读取行而不会丢失我的位置

java固定线程池和定时线程池的区别

Java在线程内对同一变量上的指令重新排序

java - Java内存模型中的final字段