Code Bye

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

 

请问线程的终止一般用什么办法?
我在主线程中用start()启动一个子线程,子线程的run方法大概是下面这样的。
public void run() {
    while (flg) {
         ****处理****
    }
}

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

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


5分
run方法执行完以后线程就结束了, 不能再start。

5分
你这个线程已经执行完毕了,都已经不存在了,你肯定不能再start了。不存在的东西,你怎么启动了。
只能重新创建线程再进行start咯。
弱弱问下 没有重启线程的方法吗~~!   .isAlive()=true  然后再.start可以吗 ~~! 和楼主同求大神解答
好吧 瞬间明白了~~!

10分
貌似没有,一般控制线程 都在循环里判断个标志.通过标志值进行你自己的想法.
你想要的重启时没得了.

你的想法可能是想暂停行动与恢复行动吧.
可以暂停的.然后你唤醒他

引用 4 楼 fengcaho0616 的回复:

好吧 瞬间明白了~~!

谢谢回复,跟你说的差不多,我在下面这个循环里有暂停线程和恢复线程的操作。
while (flg) {
         ****处理****
    }
不过整个循环退出以后,我仍然需要再次开启这个线程。是不是这时候就只能重新new一个,而不能把原来这个再start起来了?

刚才引用错了,应该引用 mysd76 老兄的回复

10分
run完就不能再start了
你的功能可以考虑在代码里wait一下, 需要重启就notify它

10分
线程执行完run()方法后就结束了。。。这个线程都不存在了,你怎么能重启呢。
楼主你说的应该是将线程暂停,然后必要时候再唤醒它吧
明白了,谢谢各位啊。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明java 线程的,isAlive() 是false的时候,可以start()吗?