syedu020 发表于 2022-6-19 14:45:57

如皋java培训机构+++Java内存模型之重排序

【如皋java培训机构+】
as-if-serial语义
as-if-serial语义的意思是,所有的操作均可以为了优化而被重排序,但是你必须要保证重排序后执行的结果不能被改变,编译器、runtime、处理器都必须遵守as-if-serial语义。注意as-if-serial只保证单线程环境,多线程环境下无效。

下面我们用一个简单的示例来说明:
int a = 1 ;      //Aint b = 2 ;      //Bint c = a + b;   //C
A、B、C三个操作存在如下关系:A、B不存在数据依赖关系,A和C、B和C存在数据依赖关系,因此在进行重排序的时候,A、B可以随意排序,但是必须位于C的前面,执行顺序可以是A –> B –> C或者B –> A –> C。但是无论是何种执行顺序最终的结果C总是等于3。

as-if-serail语义把单线程程序保护起来了,它可以保证在重排序的前提下程序的最终结果始终都是一致的。

△联系人:如皋上元教育董老师▽
△如皋上元教育学校地址:江苏省南通市如皋海阳路中山大厦12楼上元教育(中国银行对面)▽
△联系电话:①⑤②⑥②⑦⑥④②①①▽


页: [1]
查看完整版本: 如皋java培训机构+++Java内存模型之重排序