重排序的问题
来源:13-6 可见性

CoffeePlayer
2020-07-01
对于synchronized,是不是不能防止重排序?
如下
a = 3;
synchronized( this) { b = 2 ;}
这里的a 和 b能发生重排序吗?
synchronized(this) { a = 1 ; b = 2 ;} 这里的a 和 b能发生重排序吗?
对于重排序,看了这些视频,讲到了 有依赖关系的代码不能发生重排序,和被volatile修饰的变量不能发生重排序。 是否还有其他的情况不能发生重排序。
写回答
1回答
-
synchronized能保证它自身的happens-before,只要满足happens-before,就可以重排序。
所以:
a = 3;
synchronized( this) { b = 2 ;}
这里的a 和 b能发生重排序吗?:可以synchronized(this) { a = 1 ; b = 2 ;} 这里的a 和 b能发生重排序吗?:可以
032020-12-07
相似问题