【发布时间】:2014-12-03 19:49:22
【问题描述】:
我创建了一个线程,一个方法会调用这个线程到.start(),这个方法可能会在线程完成它的工作之前再次调用。
我在run() 中添加了一个return;,所以当它完成它的工作并重新启动时它会死掉。但是当我在它的工作完成后尝试启动它时,它给了我一个IllegalThreadStateException。线程没有关闭吗?我以为添加 return; 会关闭它。
【问题讨论】:
-
A
Threadobject 与线程不同。在您调用.start()之前,不会创建实际线程。它会做它所做的事情,然后在.run()方法返回或抛出异常之后不再存在。Thread类的设计者希望确保每个Thread对应一个,并且只对应一个线程。由于一个线程只运行一次然后不复存在,因此对于任何给定的Thread对象t,只允许您调用一次t.start()是有道理的。 -
@jameslarge - 为什么要在评论中留下答案?
标签: java multithreading