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

如何通過jstack命令dump線程信息

 更新時(shí)間:2020年07月22日 08:33:13   作者:草木物語  
這篇文章主要介紹了如何通過jstack命令dump線程信息,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

鎖是個(gè)非常有用的工具,運(yùn)用場(chǎng)景非常多,因?yàn)樗褂闷饋矸浅:唵危乙子诶斫?。但同時(shí)它也會(huì)帶來一些困擾,那就是可能會(huì)引起死鎖,一旦產(chǎn)生死鎖,就會(huì)造成系統(tǒng)功能不可用。讓我們先來看一段代碼,這段代碼會(huì)引起死鎖,使線程t1和線程t2互相等待對(duì)方釋放鎖。

class DeadLockDemo {
  private static String A = "A";
  private static String B = "B";

  public static void main(String[] args) {
    new DeadLockDemo().deadLock();
  }

  private void deadLock() {

    Thread t1 = new Thread(new Runnable() {
      @Override
      public void run() {
        synchronized (A) {
          try {
            Thread.currentThread().sleep(2000);
          } catch (InterruptedException e) {
            e.printStackTrace();
          }
          synchronized (B) {
            System.out.println("1");
          }
        }
      }
    });

    Thread t2 = new Thread(new Runnable() {
      @Override
      public void run() {
        synchronized (B) {
          synchronized (A) {
            System.out.println("2");
          }
        }
      }
    });

    t1.start();
    t2.start();

  }
}

這段代碼只是演示死鎖的場(chǎng)景,在現(xiàn)實(shí)中你可能不會(huì)寫出這樣的代碼。但是,在一些更為復(fù)雜的場(chǎng)景中,你可能會(huì)遇到這樣的問題,比如t1拿到鎖之后,因?yàn)橐恍┊惓G闆r沒有釋放鎖(死循環(huán))。又或者是t1拿到一個(gè)數(shù)據(jù)庫鎖,釋放鎖的時(shí)候拋出了異常,沒釋放掉。

一旦出現(xiàn)死鎖,業(yè)務(wù)是可感知的,因?yàn)椴荒芾^續(xù)提供服務(wù)了,那么只能通過dump線程查看到底是哪個(gè)線程出現(xiàn)了問題,以下線程信息告訴我們是"b1_2死鎖"類的第37行和第26行引起的死鎖。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java 中cookie的詳解及簡單實(shí)例

    java 中cookie的詳解及簡單實(shí)例

    這篇文章主要介紹了java 中cookie的詳解及簡單實(shí)例的相關(guān)資料,這里對(duì)cookie 的建立與讀取,和設(shè)定cookie 生命周期等詳細(xì)介紹,需要的朋友可以參考下
    2017-01-01
  • MyBatis與其使用方法示例詳解

    MyBatis與其使用方法示例詳解

    MyBatis是一個(gè)支持自定義SQL的持久層框架,通過XML文件實(shí)現(xiàn)SQL配置和數(shù)據(jù)映射,簡化了JDBC代碼的編寫,本文給大家介紹MyBatis與其使用方法講解,感興趣的朋友一起看看吧
    2025-03-03
  • Java8實(shí)現(xiàn)FTP及SFTP文件上傳下載

    Java8實(shí)現(xiàn)FTP及SFTP文件上傳下載

    這篇文章主要介紹了Java8實(shí)現(xiàn)FTP及SFTP文件上傳下載,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 輕松掌握java組合模式

    輕松掌握java組合模式

    這篇文章主要幫助大家輕松掌握java組合模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • mybatis(mybatis-plus)映射文件(XML文件)中特殊字符轉(zhuǎn)義的實(shí)現(xiàn)

    mybatis(mybatis-plus)映射文件(XML文件)中特殊字符轉(zhuǎn)義的實(shí)現(xiàn)

    XML 文件在解析時(shí)會(huì)將五種特殊字符進(jìn)行轉(zhuǎn)義,本文主要介紹了mybatis(mybatis-plus)映射文件(XML文件)中特殊字符轉(zhuǎn)義的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • 如何配置Spring Boot中的Jackson序列化

    如何配置Spring Boot中的Jackson序列化

    在開發(fā)基于Spring Boot的應(yīng)用程序時(shí),Jackson是默認(rèn)的JSON序列化和反序列化工具,本文將詳細(xì)介紹如何在Spring Boot中配置Jackson,以滿足這些需求,感興趣的朋友一起看看吧
    2025-04-04
  • java通過ssh連接服務(wù)器執(zhí)行shell命令詳解及實(shí)例

    java通過ssh連接服務(wù)器執(zhí)行shell命令詳解及實(shí)例

    這篇文章主要介紹了java通過ssh連接服務(wù)器執(zhí)行shell命令詳解及實(shí)例方法的相關(guān)資料
    2017-02-02
  • Java中線程池自定義實(shí)現(xiàn)詳解

    Java中線程池自定義實(shí)現(xiàn)詳解

    這篇文章主要為大家詳細(xì)介紹了Java如何實(shí)現(xiàn)自定義線程池,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定的幫助,感興趣的小伙伴可以了解一下
    2023-03-03
  • Java中異或的深入講解

    Java中異或的深入講解

    這篇文章主要給大家介紹了關(guān)于Java中異或的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 關(guān)于synchronized、volatile、ReentrantLock的區(qū)別與對(duì)比

    關(guān)于synchronized、volatile、ReentrantLock的區(qū)別與對(duì)比

    這篇文章主要介紹了關(guān)于synchronized、volatile、ReentrantLock的區(qū)別與對(duì)比,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評(píng)論

喀喇沁旗| 永顺县| 于都县| 伊宁县| 彝良县| 兴城市| 三台县| 大庆市| 五华县| 石嘴山市| 阳新县| 秦皇岛市| 溆浦县| 丹寨县| 鸡东县| 济源市| 金阳县| 滦平县| 安达市| 如东县| 沭阳县| 开化县| 福安市| 奉贤区| 清流县| 朝阳县| 磴口县| 娄烦县| 元朗区| 温州市| 怀安县| 天祝| 青海省| 垦利县| 临泉县| 邵阳市| 炎陵县| 青浦区| 玉龙| 曲靖市| 沙雅县|