java - 停止线程并再次开始在黑莓中给出 IllegalThreadStateException

标签 java multithreading blackberry java-me

我在使用以下代码时遇到 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();

From the API docs

IllegalThreadStateException - if the thread was already started.

我知道不能 100% 清楚您不能再次调用 start(),即使您之前调用过 interrupt(),但这就是它的工作方式.

如果您查看 API docs for standard Java ,这个问题就比较清楚了。

关于java - 停止线程并再次开始在黑莓中给出 IllegalThreadStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13538668/

相关文章:

c - 是否可以使用相同的静态void函数在c中使用多个线程?

java - 在 Blackberry 手机中打开 Microsoft Access 数据库

java - 如何修复输入文件中的 NoSuchElementException?

Java 1.6 : Pass generic interface to generic class

java - 更改 java 8 默认方法的可见性

c# - 在任务中使用异步套接字

java - java中如何查找当前拥有锁的线程

user-interface - 如何处理 Blackberry Storm 中的 ButtonField 和 BitmapField 单击(触摸)事件?

android - 适用于 Android/iPhone/黑莓设备的聊天服务器

java - 谷歌搜索并用java打印结果