[java]多線程——多線程debug調試(非常非常詳細的調試)


在日常開發中我們經常會遇到多線程Debug調試,

一般我們都是利用Spring Boot對外提供接口,Tomcat中在有多人同時訪問時,會開啟多線程,但是,這時有可能發生異常。

說明接口在多線程訪問中不是很穩定,這時就要利用多線程的Debug調試。

以下是一個小Demo來演示多線程的Debug調試

public class LockDemoReetrantLock {
private int i=0;
private ReentrantLock reentrantLock=new ReentrantLock();
public void inCreate(){
斷點 reentrantLock.lock();

try{
i++;
}finally {
reentrantLock.unlock();//注意:一般的釋放鎖的操作都放到finally中,
// 多線程可能會出錯而停止運行,如果不釋放鎖其他線程都不會拿到該鎖
}

}


public static void main(String[] args){
ReentrantLock lock = new ReentrantLock();
lock.lock();
LockDemoReetrantLock lockDemoReetrantLock = new LockDemoReetrantLock();
for (int i=0;i<3;i++){
new Thread(()->{
lockDemoReetrantLock.inCreate();
}).start();
}


}
}


開始剛一執行此時i=2

 

接着下一步下一步,程序直接跳出 看不到ReentrantLock的排隊操作,

再次運行

在進行一次調試此時i=1

 

同樣看不到排隊操作,不是我們想要的結果!!

在斷點調試的斷點上右擊實現設置(Mac版)

一運行Debug 其它兩個線程就已經啟動了,中有一個線程能夠停止到這個斷點

改為Thread之后---->makeDefault---->done

此時就Ok了

 

————————————————
版權聲明:本文為CSDN博主「qq_29235677」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_29235677/article/details/88186308


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM