当前位置: 代码迷 >> J2EE >> java 线程的,isAlive() 是false的时分,可以start()吗
  详细解决方案

java 线程的,isAlive() 是false的时分,可以start()吗

热度:881   发布时间:2016-04-17 23:45:21.0
java 线程的,isAlive() 是false的时候,可以start()吗?
请问线程的终止一般用什么办法?
我在主线程中用start()启动一个子线程,子线程的run方法大概是下面这样的。
public void run() {
    while (flg) {
         ****处理****
    }
}

在主程序中把flg设成false以后,子线程就跳出循环了,用子线程的isAlive()方法看,结果也是false。
这个时候想用start()方法重新启动子线程的时候抛出异常。
java.lang.IllegalThreadStateException

这是为什么,是子线程没有真正停止吗?
如果想重新开启子线程应该怎么办?

------解决方案--------------------
run方法执行完以后线程就结束了, 不能再start。


------解决方案--------------------
你这个线程已经执行完毕了,都已经不存在了,你肯定不能再start了。不存在的东西,你怎么启动了。
只能重新创建线程再进行start咯。
------解决方案--------------------
貌似没有,一般控制线程 都在循环里判断个标志.通过标志值进行你自己的想法.
你想要的重启时没得了.

你的想法可能是想暂停行动与恢复行动吧.
可以暂停的.然后你唤醒他
------解决方案--------------------
run完就不能再start了
你的功能可以考虑在代码里wait一下, 需要重启就notify它
------解决方案--------------------
线程执行完run()方法后就结束了。。。这个线程都不存在了,你怎么能重启呢。
楼主你说的应该是将线程暂停,然后必要时候再唤醒它吧
  相关解决方案