当我尝试再次启动我的线程时,我得到了以下错误。
Exception in thread "Thread-1" java.lang.IllegalThreadStateException
at java.lang.Thread.start(Unknown Source)
at com.jrat.server.Server.run(Server.java:159)下面是这行代码:
if (!t.isAlive()) t.start();代码可以多次执行,因为它在循环中(套接字处理程序)。据我所知,这个错误意味着它不能启动一个新的线程,因为它已经在运行。奇怪的是我以前有过isAlive。
你知道为什么会这样吗?
谢谢。
发布于 2012-04-18 18:20:52
据我所知,这个错误意味着它不能启动一个新的
,因为它已经在运行了。
不,这意味着你不能启动已经启动的线程。
你不能重新启动一个线程,这就是你想要做的。来自the documentation for start()
抛出: IllegalThreadStateException -如果线程已经启动。
你可能应该改用ExecutorService --但这并不清楚你想要做什么。
发布于 2012-04-18 18:22:39
您不能在先前已启动的线程上调用start。即使线程运行方法已经终止。
发布于 2012-04-18 19:49:48
您试图实现的是,如果您的线程不是活动的,则启动它。但它在概念上是错误的。
即使线程不是活动的,也不能调用start方法。如果您已经启动了一次,那么即使在它完成执行之后,您也不能再次启动它。
如果您打算重新运行任务,那么可以尝试ExecutorService。
https://stackoverflow.com/questions/10207369
复制相似问题