中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Java編程之多線程死鎖與線程間通信簡單實現代碼-創(chuàng)新互聯

死鎖定義

目前創(chuàng)新互聯已為數千家的企業(yè)提供了網站建設、域名、網頁空間、網站運營、企業(yè)網站設計、敦化網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發(fā)展。

死鎖是指兩個或者多個線程被永久阻塞的一種局面,產生的前提是要有兩個或兩個以上的線程,并且來操作兩個或者多個以上的共同資源;我的理解是用兩個線程來舉例,現有線程A和B同時操作兩個共同資源a和b,A操作a的時候上鎖LockA,繼續(xù)執(zhí)行的時候,A還需要LockB進行下面的操作,這個時候b資源在被B線程操作,剛好被上了鎖LockB,假如此時線程B剛好釋放了LockB則沒有問題,但沒有釋放LockB鎖的時候,線程A和B形成了對LockB鎖資源的爭奪,從而造成阻塞,形成死鎖;具體其死鎖代碼如下:

public class MyDeadLockTest {
 public static void main(String[] args){
  Object obj1 = new Object();
  Thread thread1 = new Thread(new DeadRes(true,obj1));
  Thread thread2 = new Thread(new DeadRes(false,obj1));
  thread1.start();
  thread2.start();
 }
}
class DeadRes implements Runnable{
 boolean flag;
 Object obj;
 public DeadRes(boolean flag, Object obj1) {
  this.flag = flag;
  this.obj = obj1;
 }
 @Override
 public void run() {
   if(flag){
    synchronized (DeadRes.class){
     System.out.println(Thread.currentThread().getName()+" acquie lock is DeadRes.class");
     synchronized (obj){
      System.out.println(Thread.currentThread().getName()+" acquie lock is obj");
     }
    }
   }else{
    synchronized (obj){
     System.out.println(Thread.currentThread().getName()+" acquie lock is obj");
     synchronized (DeadRes.class){
      System.out.println(Thread.currentThread().getName()+" acquie lock is DeadRes.class");
     }
    }
   }
 }
}

當前名稱:Java編程之多線程死鎖與線程間通信簡單實現代碼-創(chuàng)新互聯
文章鏈接:http://www.rwnh.cn/article14/ddcgge.html

成都網站建設公司_創(chuàng)新互聯,為您提供關鍵詞優(yōu)化、Google、搜索引擎優(yōu)化、網站收錄小程序開發(fā)、做網站

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

成都網站建設
陇南市| 荃湾区| 彭水| 平陆县| 长丰县| 桓台县| 洮南市| 金川县| 四会市| 米泉市| 英吉沙县| 右玉县| 萨嘎县| 嘉峪关市| 沈阳市| 株洲市| 金山区| 南康市| 东台市| 南部县| 蒲江县| 蓬溪县| 抚远县| 榆社县| 普陀区| 平邑县| 昆明市| 哈巴河县| 皋兰县| 普定县| 徐州市| 开鲁县| 北流市| 浦县| 阿鲁科尔沁旗| 汽车| 抚州市| 盐山县| 墨脱县| 航空| 东乡族自治县|