我知道這個問題之前已經問過,雖然間接地。但它沒有回答我的疑問。
問:Is it legal to call the start method twice on the same Thread?
從spec,
這是從來沒有的法律,以啓動一個線程 不止一次。特別是,一旦 完成執行, 線程可能無法重新啓動。
我同意。但是我的代碼並沒有拋出一個IllegalThreadStateException
它預計會執行下面的程序。
public class Tester extends Thread {
public void run() {
System.out.print("run");
}
public static void main(String[] args) {
Tester thread = new Tester();
new Thread(thread).start();
new Thread(thread).start();
}
}
Q.1)我在Eclipse中運行了上面的代碼。在這裏,因爲我試圖在同一個實例上啓動一個新線程,所以預計會拋出一個IllegalThreadStateException
。但事實並非如此。
爲什麼?
Q.2)如果我們確實在同一個實例上啓動了一個新線程,它會有什麼危害?
任何幫助將不勝感激!
我不認爲這只是(它)會造成什麼危害的問題。我認爲這更多是一個毫無意義的問題。啓動一個已經運行的線程是什麼意思?你可以開一輛已經開着的汽車嗎?這個想法根本沒有意義。 – 2011-03-31 14:19:46