当前位置:编程学习 > JAVA >>

java 保护线程如何做

   我现在要监听一个.exe的线程,要得到这个线程的启动时间,并且当这个线程超过我指定的时间就会自动关闭改线程,如果这个线程在此中途出现故障报错或者被自动关闭,则保护线程要将此线程重新开启
求助 Java 多线程 --------------------编程问答-------------------- 1 要得到这个线程的启动时间
-> 实现Callable接口,可以返回AsyncResult结果。也就意味着可以返回这个线程的启动时间。

2 并且当这个线程超过我指定的时间就会自动关闭改线程
-> 当使用Future.get的时候加上timeout的时候,并捕捉TimeoutException
自动关闭改线程
-> 设置为守护线程,在AsyncResult中返回该thread, 并且interupte它。在worker要有如下的几句

final Thread t = Thread.currentThread();
if (t.isInterrupted()) {
    return result;
}


3 线程在此中途出现故障报错或者被自动关闭,则保护线程要将此线程重新开启
-> 
AsyncResult这个非同期结果对象中设置一个成员 throwable,如果线程在执行worker的时候出现异常,将exception设置进去。
在future.get得到该结果后进行判断是否有异常,如果有,线程池重新submit该worker就可以了。 --------------------编程问答-------------------- 有木有实例可以供参考啊,我现在对这个流程还不是很清楚 --------------------编程问答--------------------
引用 2 楼 lazh5255321 的回复:
有木有实例可以供参考啊,我现在对这个流程还不是很清楚


思路我也说了
我现在没多少时间写实例了,你可以参考ThreadPoolExecutor线程池, java.util.concurrent这个包。
试着自己写写看吧。

--------------------编程问答-------------------- 刚发现我提出来的问题有点错误,我要监听的是进程,得到的也是进程启动的时间
这个和线程是有区别的吧
补充:Java ,  Java相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,