亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

鎖是個非常有用的工具,運用場景非常多,因為它使用起來非常簡單,而且易于理解。但同時它也會帶來一些困擾,那就是可能會引起死鎖,一旦產(chǎn)生死鎖,就會造成系統(tǒng)功能不可用。讓我們先來看一段代碼,這段代碼會引起死鎖,使線程t1和線程t2互相等待對方釋放鎖。

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();

  }
}

這段代碼只是演示死鎖的場景,在現(xiàn)實中你可能不會寫出這樣的代碼。但是,在一些更為復雜的場景中,你可能會遇到這樣的問題,比如t1拿到鎖之后,因為一些異常情況沒有釋放鎖(死循環(huán))。又或者是t1拿到一個數(shù)據(jù)庫鎖,釋放鎖的時候拋出了異常,沒釋放掉。

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

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

相關文章

最新評論