作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在使用以下代码时遇到 IllegalThreadStateException
异常:我已经启动了这个线程一次(通过使用 thread.start()
)并再次尝试在另一个地方启动它,所以使用了以下代码:
thread.interrupt();
thread.start();
但是 thread.start()
抛出 IllegalThreadStateException
。
我应该用什么来解决?
最佳答案
Thread
对象只能启动一次。如果您需要停止/中断一个Thread
,然后又想重新启动它,您应该创建一个新实例,并在其上调用start()
:
thread.interrupt(); // if you need to make sure thread's run() method stops ASAP
thread = new MyThreadSubclass();
thread.start();
IllegalThreadStateException - if the thread was already started.
我知道不能 100% 清楚您不能再次调用 start()
,即使您之前调用过 interrupt()
,但这就是它的工作方式.
如果您查看 API docs for standard Java ,这个问题就比较清楚了。
关于java - 停止线程并再次开始在黑莓中给出 IllegalThreadStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13538668/
我是一名优秀的程序员,十分优秀!