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

Java 線程死鎖的問題解決辦法

 更新時間:2017年09月25日 14:58:34   作者:Lovnx  
這篇文章主要介紹了 Java 線程死鎖的問題解決辦法的相關資料,希望通過本大家能幫助到大家,遇到類似問題能夠解決,需要的朋友可以參考下

 Java 線程死鎖的問題解決辦法

【線程死鎖】 

原因:兩個線程相互等待被對方鎖定的資源

代碼模擬:

public class DeadLock {
  public static void main(String[] args) {
    Object obj = new Object();
    Object obj1 = new Object();
    DeadLockThread1 D1 = new DeadLockThread1(obj, obj1);
    DeadLockThread2 D2 = new DeadLockThread2(obj, obj1);
    new Thread(D1,"線程1").start();
    new Thread(D2,"線程2").start();
  }
}

class DeadLockThread1 implements Runnable {
  private Object obj;
  private Object obj1;

  public DeadLockThread1(Object obj, Object obj1) {
    this.obj = obj;
    this.obj1 = obj1;
  }

  @Override
  public void run() {
    synchronized (obj) {   //DeadLockThread1鎖定obj對象
      try {
        Thread.sleep(1000);
        synchronized (obj1) { //等待鎖定obj1對象,obj對象已被DeadLockThread2鎖定
          obj1.getClass();
        }
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
  }
}

class DeadLockThread2 implements Runnable {
  private Object obj;
  private Object obj1;

  public DeadLockThread2(Object obj, Object obj1) {
    this.obj = obj;
    this.obj1 = obj1;
  }

  @Override
  public void run() {
    synchronized (obj1) {   //DeadLockThread2鎖定obj2對象
      try {
        Thread.sleep(1000);
        synchronized (obj) { //等待鎖定obj對象,obj對象已被DeadLockThread1鎖定
          obj.getClass();
        }
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
  }
}

查看方式:

1、【cmd】下輸入【jconsole】

2、選擇測試線程并點擊右下角【連接】,左上角選擇【線程】,左下角選擇【檢測死鎖】

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

相關文章

  • springcloud干貨之服務注冊與發(fā)現(xiàn)(Eureka)

    springcloud干貨之服務注冊與發(fā)現(xiàn)(Eureka)

    這篇文章主要介紹了springcloud干貨之服務注冊與發(fā)現(xiàn)(Eureka) ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • 深入理解Java8新特性之接口中的默認方法和靜態(tài)方法

    深入理解Java8新特性之接口中的默認方法和靜態(tài)方法

    從Java8開始,程序允許在接口中包含帶有具體實現(xiàn)的方法,使用default修飾,這類方法就是默認方法。默認方法在接口中可以添加多個,并且Java8提供了很多對應的接口默認方法,接下來讓我們一起來看看吧
    2021-11-11
  • hibernate框架環(huán)境搭建具體步驟(介紹)

    hibernate框架環(huán)境搭建具體步驟(介紹)

    下面小編就為大家?guī)硪黄猦ibernate框架環(huán)境搭建具體步驟(介紹)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Java程序控制邏輯—流程控制

    Java程序控制邏輯—流程控制

    這篇文章主要介紹了Java程序的控制邏輯流程控制,流程控制中最基本的就是條件執(zhí)行,也就是說,一些操作只能在某些條件滿足的情況下才執(zhí)行,在一些條件下執(zhí)行某種操作,在另外一些條件下執(zhí)行另外的操作,需要的朋友可以參考一下
    2022-01-01
  • Java實例化類詳解

    Java實例化類詳解

    學習JAVA這門面向?qū)ο蟮恼Z言,實質(zhì)就是不斷地創(chuàng)建類,并把類實例化為對象并調(diào)用方法。對于初學JAVA的人總搞清楚對象是如何實例化的,假如類之間存在繼承關系,那就更糊涂了。下面我們通過兩個例題來說明對象的實例化過程。
    2016-03-03
  • Java8中Optional的一些常見錯誤用法總結

    Java8中Optional的一些常見錯誤用法總結

    我們知道 Java 8 增加了一些很有用的 API, 其中一個就是 Optional,下面這篇文章主要給大家介紹了關于Java8中Optional的一些常見錯誤用法的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-07-07
  • Spring Cloud使用Feign實現(xiàn)Form表單提交的示例

    Spring Cloud使用Feign實現(xiàn)Form表單提交的示例

    本篇文章主要介紹了Spring Cloud使用Feign實現(xiàn)Form表單提交的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • java為什么會出現(xiàn)精度丟失這種現(xiàn)象你知道嗎

    java為什么會出現(xiàn)精度丟失這種現(xiàn)象你知道嗎

    這篇文章主要介紹了Java精度丟失的問題,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下,希望能夠給你帶來幫助
    2021-08-08
  • 解決mybatis-plus 查詢耗時慢的問題

    解決mybatis-plus 查詢耗時慢的問題

    這篇文章主要介紹了解決mybatis-plus 查詢耗時慢的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • eclipse中沒有SERVER的解決辦法(超詳細)

    eclipse中沒有SERVER的解決辦法(超詳細)

    使用eclipse進行tomcat配置時,經(jīng)常會發(fā)現(xiàn)一個重要的問題就是打開eclipse之后沒有了server選項,所以本給大家詳細介紹了eclipse中沒有SERVER的解決辦法,文中有詳細的圖文講解,需要的朋友可以參考下
    2023-12-12

最新評論

奉节县| 河东区| 兴义市| 长乐市| 巩义市| 澄城县| 大理市| 北碚区| 龙门县| 鹤壁市| 大余县| 荣成市| 溧阳市| 香港| 瑞昌市| 祁阳县| 天全县| 合阳县| 青阳县| 临猗县| 琼结县| 星子县| 冕宁县| 吉林市| 延川县| 海兴县| 柳州市| 宁夏| 和硕县| 虹口区| 榕江县| 河东区| 卢湾区| 尚志市| 眉山市| 新竹市| 广平县| 曲周县| 翁牛特旗| 公安县| 纳雍县|