我想測試Thread.sleep()方法,並且我發現了一個有趣的事情..當我調用main()方法時,控制檯將打印出「UserA sleeping ...」和「用戶A喚醒...」,這意味着程序被喚醒,但是當我使用junit方法運行與main()方法相同的代碼時,它不會打印出「UserA wake ...」... I將不勝感激任何人都可以解釋它。爲什麼不能喚醒這個線程
package com.lmh.threadlocal;
import org.junit.Test;
public class ThreadTest {
public static void main(String [] args) {
new Thread(new UserA()).start();
}
@Test
public void testWakeup(){
new Thread(new UserA()).start();
}
}
class UserA implements Runnable{
@Override
public void run() {
try {
System.out.println("UserA sleeping...");
Thread.sleep(1000);
System.out.println("UserA waking...");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
「醒來傑夫!!」 –
您可以在'testWakeup'的開始和結束處添加更多調試語句。就像,在開始 - 「產生一個新線程」。 – bsd
但爲什麼調用main()方法不需要喚醒? – Crowley