3 回答
![?](http://img1.sycdn.imooc.com/5458477300014deb02200220-100-100.jpg)
TA贡献1846条经验 获得超7个赞
根据Java API规范中的Thread.start方法:
一次启动一个线程永远是不合法的。特别是,线程一旦完成执行就可能不会重新启动。
此外:
抛出:
IllegalThreadStateException-如果线程已经启动。
所以是的,a Thread只能启动一次。
如果是,那么如果我想再次运行线程该怎么办?
如果一个Thread需求需要运行多次,那么应该创建一个新实例Thread并调用start它。
![?](http://img1.sycdn.imooc.com/5333a0350001692e02200220-100-100.jpg)
TA贡献1786条经验 获得超13个赞
不,我们不能再次启动Thread,这样做将引发runtimeException java.lang.IllegalThreadStateException。>
原因是一旦Thread执行run()方法,它将进入死状态。
让我们举一个例子-考虑再次启动线程并在其上调用start()方法(内部将调用run()方法)就像让死人醒来并运行一样。因为,在完成他的生命后,人将进入死亡状态。
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(未知源)* /
添加回答
举报