開發中使用到多線程的時候不少,但是debug起來還是比較困難的,因為默認每次只會進入一個線程,這樣有些問題是發現不了的,其實IDEA也是支持進入每個線程來debug的
寫一個簡單的demo
public class ThreadDebug {public static void main(String[] args) {MyThread myThread = new MyThread();Thread thread1 = new Thread(myThread, "thread 1");Thread thread2 = new Thread(myThread, "thread 2");Thread thread3 = new Thread(myThread, "thread 3");thread1.start();thread2.start();thread3.start();}
}class MyThread implements Runnable {@Overridepublic void run() {System.out.println(Thread.currentThread().getName() + " running");}
}
?
如果我們多次執行這個代碼,就會發現,每一次打印的結果都不一樣,三個線程的輸出順序是隨機的,并且每一次debug只會進入到一個線程的執行每次執行結果隨機是因為不一定哪個線程可以先獲得CPU時間片
更改debug設置
其實,在IDEA中有一個設置,那就是當我們在斷點處單擊鼠標右鍵就會彈出一個設置對話框,當我們把其中的AI修改為 Thread之后,嘗試重新執行debug代碼。
重新執行之后,就可以發現,每一個線程都會進入到斷點當中了
?
每次只會進入到一個線程中