首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有效的重新排序-在新的JMM下

有效的重新排序-在新的JMM下
EN

Stack Overflow用户
提问于 2013-07-07 02:24:45
回答 1查看 175关注 0票数 4

我只想知道下面的重新排序在新的JMM模型下是否有效

代码语言:javascript
复制
Original Code: 
     instanceVar1 = value ;//  normal read operation, no volatile
     synchronized(this) {
       instanceVar2 = value2; //normal read operation, no volatile   
     }
     instanceVar3 = value3;  //normal read operation, no volatile

可以将上面的代码重新排序为以下执行。

代码语言:javascript
复制
Case 1:

     synchronized(this) {
       instanceVar2 = value2; //normal read operation, no volatile   
       instanceVar1 = value ;//  normal read operation, no volatile
     }
     instanceVar3 = value3;  //normal read operation, no volatile

另一种情况:

代码语言:javascript
复制
Case 2:

  synchronized(this) {
       instanceVar3 = value3;  //normal read operation, no volatile
       instanceVar2 = value2; //normal read operation, no volatile   
       instanceVar1 = value ;//  normal read operation, no volatile
     }

另一种情况:

代码语言:javascript
复制
Case 3: 

    instanceVar3 = value3;  //normal read operation, no volatile
    synchronized(this) {
       instanceVar2 = value2; //normal read operation, no volatile   
       instanceVar1 = value ;//  normal read operation, no volatile
     }

另一种情况:

代码语言:javascript
复制
Case 4: 

    instanceVar3 = value3;  //normal read operation, no volatile
    synchronized(this) {
       instanceVar2 = value2; //normal read operation, no volatile   
     }
    instanceVar1 = value ;//  normal read operation, no volatile

以上四种情况都是在新的JMM模型下对原始代码进行有效的重新排序吗?基于我对http://gee.cs.oswego.edu/dl/jmm/cookbook.html的理解,我给出了上述所有的重新排序

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-07 20:43:53

考虑正常的加载/存储是如何在监视器进入和退出时重新排序的:

情况1使用监视器enter对正常的加载/存储进行重新排序,这是一种有效的重新排序。

情况2使用监视器enter对正常加载/存储进行重新排序,并在监视器退出之后进行正常加载/存储,这些都是有效的重新排序。

请看一个类似的例子:Roach Motels and Java Memory Model。这表明可以将访问移动到同步块中,但不能再次移出。

情况3和4对监视器enter重新排序,然后是无效的正常加载/存储。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17505830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档