首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java -线程状态异常

Java -线程状态异常
EN

Stack Overflow用户
提问于 2012-04-18 18:18:44
回答 5查看 2.4K关注 0票数 3

当我尝试再次启动我的线程时,我得到了以下错误。

代码语言:javascript
复制
Exception in thread "Thread-1" java.lang.IllegalThreadStateException
     at java.lang.Thread.start(Unknown Source)
     at com.jrat.server.Server.run(Server.java:159)

下面是这行代码:

代码语言:javascript
复制
if (!t.isAlive()) t.start();

代码可以多次执行,因为它在循环中(套接字处理程序)。据我所知,这个错误意味着它不能启动一个新的线程,因为它已经在运行。奇怪的是我以前有过isAlive。

你知道为什么会这样吗?

谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-04-18 18:20:52

据我所知,这个错误意味着它不能启动一个新的

,因为它已经在运行了。

不,这意味着你不能启动已经启动的线程。

你不能重新启动一个线程,这就是你想要做的。来自the documentation for start()

抛出: IllegalThreadStateException -如果线程已经启动。

你可能应该改用ExecutorService --但这并不清楚你想要做什么。

票数 8
EN

Stack Overflow用户

发布于 2012-04-18 18:22:39

您不能在先前已启动的线程上调用start。即使线程运行方法已经终止。

票数 2
EN

Stack Overflow用户

发布于 2012-04-18 19:49:48

您试图实现的是,如果您的线程不是活动的,则启动它。但它在概念上是错误的。

即使线程不是活动的,也不能调用start方法。如果您已经启动了一次,那么即使在它完成执行之后,您也不能再次启动它。

如果您打算重新运行任务,那么可以尝试ExecutorService。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10207369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档