最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java并發(fā)之不可思議的死循環(huán)詳解

 更新時(shí)間:2017年01月17日 10:58:12   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇Java并發(fā)之不可思議的死循環(huán)詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

下面的代碼將發(fā)生死循環(huán):

package com.zzj.concurrency;

public class VolatileObjectTest implements Runnable{
 private ObjectA objectA; // 加上volatile 就可以正常結(jié)束While循環(huán)了
  public VolatileObjectTest(ObjectA a) { 
    this.objectA = a; 
  } 
  
  public ObjectA getA() { 
    return objectA; 
  } 
  
  public void setA(ObjectA a) { 
    this.objectA = a; 
  } 
  
  @Override 
  public void run() { 
    long i = 0; 
    while (objectA.isFlag()) { 
      i++; 
    } 
    System.out.println("stop My Thread " + i); 
  } 
  
  public void stop() { 
    objectA.setFlag(false); 
  } 
  
  public static void main(String[] args) throws InterruptedException { 
     // 如果啟動(dòng)的時(shí)候加上-server 參數(shù)則會(huì) 輸出 Java HotSpot(TM) Server VM 
    System.out.println(System.getProperty("java.vm.name")); 
      
    VolatileObjectTest test = new VolatileObjectTest(new ObjectA()); 
    new Thread(test).start(); 
  
    Thread.sleep(1000); 
    test.stop(); 
    System.out.println("Main Thread " + test.getA().isFlag()); 
  } 
  
  static class ObjectA { 
    private boolean flag = true; 
  
    public boolean isFlag() { 
      return flag; 
    } 
  
    public void setFlag(boolean flag) { 
      this.flag = flag; 
    } 
  
  } 
}

死循環(huán)發(fā)生在代碼段:

while (objectA.isFlag()) { 
    i++;
}

這是由于編譯器對(duì)其進(jìn)行了優(yōu)化,因?yàn)閣hile循環(huán)內(nèi)部沒(méi)有修改objectA變量且沒(méi)有用volatile修飾,JVM會(huì)把判斷提前,類似于優(yōu)化成如下:

if(objectA.isFlag()){
  while(true){
    i++;
  }
}

以上這篇Java并發(fā)之不可思議的死循環(huán)詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

全南县| 同德县| 黑水县| 津南区| 石棉县| 虹口区| 勐海县| 平舆县| 家居| 临邑县| 正蓝旗| 改则县| 平阴县| 班玛县| 交城县| 石台县| 金阳县| 通化市| 永嘉县| 上高县| 泸州市| 昌吉市| 云和县| 灌阳县| 喀什市| 中宁县| 玉田县| 海兴县| 磐安县| 鞍山市| 稷山县| 图片| 白水县| 阜宁县| 永清县| 玛纳斯县| 永安市| 漳平市| 祁门县| 兴化市| 门头沟区|