问题描述
java新手一个。如何人为得终止一个正在执行的线程,又可以人为的恢复??为了可以控制线程,我不得不将run方法先设置为死循环,然后在里面根据信号量quit的变化是否执行线程的方法后来发现“停止线程后”CPU的占用率升高很多,这是我不想要的。所以来求助如何中断线程并且把线程占的资源全部释放出去publicvoidrun(){while(true){if(quit==false)//判断线程是否继续运行{...................//要执行的方法try{Thread.sleep(n);}catch(InterruptedExceptione){}}}}
解决方案
解决方案二:
线程运行完成之后自动退出,任何一切手段直接搞死线程都是非法的。这种行为不被推荐,虽然JDK有过期的直接杀死的方式。最好利用手段让线程正常的执行完成。
解决方案三:
引用1楼littlebrain4solving的回复:
线程运行完成之后自动退出,任何一切手段直接搞死线程都是非法的。这种行为不被推荐,虽然JDK有过期的直接杀死的方式。最好利用手段让线程正常的执行完成。
可是实验要求是要中间可以认为得中断线程呀,而且我的线程主要是承担着显示绘画功能,要一直不停绘图,不能停的啊
解决方案四:
我想楼主看完这篇文章,一定能解决你的问题
解决方案五:
引用2楼u012551157的回复:
Quote: 引用1楼littlebrain4solving的回复:
线程运行完成之后自动退出,任何一切手段直接搞死线程都是非法的。这种行为不被推荐,虽然JDK有过期的直接杀死的方式。最好利用手段让线程正常的执行完成。可是实验要求是要中间可以认为得中断线程呀,而且我的线程主要是承担着显示绘画功能,要一直不停绘图,不能停的啊
那你自己通过AtomicInteger来控制线程的退出,当整型的值是多少的时候就停止绘画,让线程自己执行完成就可以了。
解决方案六:
waitnotify
时间: 2016-10-26