3 回答

TA貢獻1846條經(jīng)驗 獲得超7個贊
根據(jù)Java API規(guī)范中的Thread.start方法:
一次啟動一個線程永遠是不合法的。特別是,線程一旦完成執(zhí)行就可能不會重新啟動。
此外:
拋出:
IllegalThreadStateException-如果線程已經(jīng)啟動。
所以是的,a Thread只能啟動一次。
如果是,那么如果我想再次運行線程該怎么辦?
如果一個Thread需求需要運行多次,那么應該創(chuàng)建一個新實例Thread并調(diào)用start它。

TA貢獻1786條經(jīng)驗 獲得超13個贊
不,我們不能再次啟動Thread,這樣做將引發(fā)runtimeException java.lang.IllegalThreadStateException。>
原因是一旦Thread執(zhí)行run()方法,它將進入死狀態(tài)。
讓我們舉一個例子-考慮再次啟動線程并在其上調(diào)用start()方法(內(nèi)部將調(diào)用run()方法)就像讓死人醒來并運行一樣。因為,在完成他的生命后,人將進入死亡狀態(tài)。
public class MyClass implements Runnable{
@Override
public void run() {
System.out.println("in run() method, method completed.");
}
public static void main(String[] args) {
MyClass obj=new MyClass();
Thread thread1=new Thread(obj,"Thread-1");
thread1.start();
thread1.start(); //will throw java.lang.IllegalThreadStateException at runtime
}
}
/ *在run()方法中輸出,方法已完成。線程“主”中的異常java.lang.Thread.start上的java.lang.IllegalThreadStateException(未知源)* /
添加回答
舉報