在日常開發中我們經常會遇到多線程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