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

java 中死鎖問題的實例詳解

 更新時間:2017年09月19日 10:03:21   作者:CC小觀  
這篇文章主要介紹了java 中死鎖問題的實例詳解的相關(guān)資料,希望通過本文大家能夠理解掌握死鎖的問題,需要的朋友可以參考下

java 中死鎖問題的實例詳解

先看代碼在做解釋

public class DeadLock implements Runnable{
  String a;
  String b;
  boolean flag;
  public DeadLock(String a,String b,boolean flag){
    this.a=a;
    this.b=b;
    this.flag=flag;
  }
  public void run(){
    if(flag){
//     while(true){
          synchronized(a){
            System.out.println("鎖a");
            synchronized(b){
              System.out.println("鎖b----");
            }
          }
//       }
    }else{
//   while(true){
        synchronized(b){
          System.out.println("鎖b");
          synchronized(a){
            System.out.println("鎖a----");
          }
        }
//     }
    }
  }

  public static void main(String[] args){
  String a=new String("a");
  String b=new String("b");
  DeadLock d1=new DeadLock(a,b,true);
  DeadLock d2=new DeadLock(a,b,false);
  Thread t1=new Thread(d1);
  Thread t2=new Thread(d2);
  t1.start();
  t2.start();
  System.out.println("歡聲笑語中打出GG");
  }

}

以上是代碼部分,如果沒有死鎖,可以在if下加while(true),必然死鎖,下面來做說明。

這個僅僅是為了理解死鎖和面試用的,創(chuàng)建兩個對象a和b只是為了作為死鎖的對象而用,線程t1運(yùn)行(t1.start()),線程t1拿到鎖a后,需要繼續(xù)執(zhí)行,拿到鎖b,而線程t2運(yùn)行(t2.start()),拿到鎖b,想繼續(xù)拿到鎖a繼續(xù)執(zhí)行,這就形成死鎖,互相持有對面所需要的鎖對象。

如果面試,可以簡單記下,兩個線程,兩個鎖對象,鎖互相嵌套,最少兩種狀態(tài),同時執(zhí)行,一次不行就多次,也可鎖外面加循環(huán),讓線程多次運(yùn)行,就會死鎖,因為運(yùn)行一次,可能存在偶然,第一個線程執(zhí)行完了,鎖對象釋放了,第二個線程才進(jìn)來執(zhí)行,如此就有偶然現(xiàn)象。

如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

最新評論

礼泉县| 讷河市| 繁昌县| 巫溪县| 翁牛特旗| 镇江市| 大余县| 公安县| 碌曲县| 阜阳市| 龙里县| 和政县| 连云港市| 忻城县| 横山县| 阿克陶县| 平泉县| 高碑店市| 隆尧县| 澄城县| 涪陵区| 吴旗县| 定南县| 响水县| 四子王旗| 灯塔市| 沙河市| 湘西| 霍城县| 德安县| 象州县| 华蓥市| 武定县| 邮箱| 容城县| 牡丹江市| 盐亭县| 京山县| 惠安县| 罗源县| 阿城市|