求助如何可恢复地中断线程

问题描述

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

求助如何可恢复地中断线程的相关文章

多线程问题-新手求助关于Java多线程中启动线程问题

问题描述 新手求助关于Java多线程中启动线程问题 public class Example15_1 { /** * @param args */public static void main(String[] args) { // TODO Auto-generated method stub SpeakHello speakHello; SpeakNinhao speakNinhao; speakHello = new SpeakHello(); speakNinhao= new Speak

服务器备份-bacula备份的内容无法恢复,sd线程状态显示如下

问题描述 bacula备份的内容无法恢复,sd线程状态显示如下 Device status: Device "FileStorage" (/tmp/backup) is not open. Used Volume status:

Java多线程之中断线程(Interrupt)的使用详解_java

interrupt方法 interrupt字面上是中断的意思,但在Java里Thread.interrupt()方法实际上通过某种方式通知线程,并不会直接中止该线程.具体做什么事情由写代码的人决定,通常我们会中止该线程.     如果线程在调用Object类的wait().wait(long)或wait(long, int)方法,或者该类的 join() .join(long) .join(long, int) .sleep(long) 或 sleep(long, int) 方法过程中受阻,则其

Android中断线程的处理方法_Android

本文实例讲述了Android中断线程的处理方法.分享给大家供大家参考.具体方法如下: 我现在对一个用户注册的功能 1.用ProgressDialog将当前页面设成不可操作(保留返回键 退出ProgressDialog) 2.用一个线程clientThread执行数据的提交和返回 问题:考虑到ProgressDialog运行过程中,返回键的操作,应该终止clientThread的运行. 代码如下,感兴趣的朋友可以参考运行一下,以便得出更好的解决办法. 复制代码 代码如下: btn_register

linux中断线程化分析【转】

转自:http://blog.csdn.net/qq405180763/article/details/24120895 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在为3.8版本的Linux内核打RT_PREEMPT补丁,并且优化系统实时性,这篇文章主要对RTlinux中中断线程化部分进行分析.我们知道在RT_PREEMPT补丁中之所以要将中断线程化就是因为硬中断的实时性太高,会影响实时进程的实时性,所以需要将中断处理程序线程化并设置优先级,使中断处理线程的优先级比实时进程优先级

Android中断线程的处理方法

本文实例讲述了Android中断线程的处理方法.分享给大家供大家参考.具体方法如下: 我现在对一个用户注册的功能 1.用ProgressDialog将当前页面设成不可操作(保留返回键 退出ProgressDialog) 2.用一个线程clientThread执行数据的提交和返回 问题:考虑到ProgressDialog运行过程中,返回键的操作,应该终止clientThread的运行. 代码如下,感兴趣的朋友可以参考运行一下,以便得出更好的解决办法. 复制代码 代码如下: btn_register

求助:VC使用ODBC连接数据库,线程阻塞

问题描述 VC使用ODBC连接oracle数据库,因数据库连接中断,导致线程执行数据库操作时线程阻塞,不会抛出异常,怎么处理啊 解决方案 解决方案二:实际操作时,连接中断后,会抛出异常.解决方案三:因数据库连接中断.其实链接中断了.你无法进行后续操作的.你判断一下.链接中断就返回算了.写个日志.

中断线程

检查线程中断状态 每一个线程都有一个记录该线程中断状态的标记位,这是一个 boolean 标记.每个线程都应该不时地检查这个标记位以确定线程是否已经被中断. 调用 interrupt 方法可以请求终止线程,也就是将成功调用 interrupt 方法的线程的中断标记位置为 true. 如果我们想知道线程是否被置位,应该操作: ① 调用静态的 Thread.currentThread 方法获得当前线程 ② 调用 isInterrupt 方法检查标记位 while(!Thread.currentThr

关于线程中断的总结

在Core Java中有这样一句话:"没有任何语言方面的需求要求一个被中断的程序应该终止.中断一个线程只是为了引起该线程的注意,被中断线程可以决定如何应对中断 " 中断是一种协作机制.当一个线程中断另一个线程时,被中断的线程不一定要立即停止正在做的事情.相反,中断是礼貌地请求另一个线程在它愿意并且方便的时候停止它正在做的事情.有些方法,例如 Thread.sleep(),很认真地对待这样的请求,但每个方法不是一定要对中断作出响应.对于中断请求,不阻塞但是仍然要花较长时间执行的方法可以轮