當我嘗試調試多線程程序時,遇到了一個新問題。下面,我列出了一個測試程序,演示了我的問題。實質上,當我在調用線程的start()方法以及該線程的run()方法時放置一個斷點時,如果在調試器中「繼續」,事情就沒有問題。但是,如果我繼續,我可以逐步調用start(),println()和join(),之後程序將等待執行完成,但這種情況從未發生過。線程似乎不會執行,並且我的斷點在線程的run()中不會跳閘。我必須退出程序。掛上線程運行()帶斷點
現在,如果run()中沒有斷點,我繼續還是繼續都沒有關係;該線程執行。我在這裏錯過了什麼?
請注意,我使用的是香草eclipse調試。
public class Test {
public static void main(String[] args) {
try {
Thread myThread = new Test().new TestThread();
long threadStartTime = System.currentTimeMillis();
myThread.start(); // **********Breakpoint 1
System.out.println("Thread started");
myThread.join();
long threadExecutionTime = System.currentTimeMillis() - threadStartTime;
System.out.println("Thread finished execution in " + threadExecutionTime + " milliseconds.");
} catch(InterruptedException e) {
System.err.println(e.getMessage());
}
}
private class TestThread extends Thread {
@Override
public void run() { // **********Breakpoint 2
try {
sleep(5*1000);
} catch(InterruptedException e) {
System.err.println(e.getMessage());
}
}
}
}
恰到好處。謝謝你們! – Walker