Java-监听线程死亡java

Java-监听线程死亡java

清晨说ぺ晚安 发布于 2017-02-20 字数 59 浏览 1201 回复 2

写一个程序实现能够监听线程死亡事件!能给个例子更好!

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浮生未歇 2017-08-23 2 楼

Java里, 线程 正常退出或抛出异常, 都没有你说的"线程死亡事件"这个概念.

要实现这个目的,
1). 使用一些线程同步方法, 如主线程wait, 工作线程退出或抛出异常(必须catch到)时 调用notify. 当然Java1.5以后, 提倡使用Condition来取代wait-notify;
2). 主线程轮询工作线程状态, 用Thread.isAlive()方法:
http://docs.oracle.com/javase/6/docs/api/java/lang/Thread.html#isAlive%28%29

--更新--
我找到了这个“线程死亡事件”。
当调用thread.stop()时会抛出ThreadDeath error. Thread.stop()基本不会有人用了吧,所以这个基本是一个 ‘死’ 知识点。

理论上可以监听ThreadDeath,实际上行不通。见:
http://docs.oracle.com/javase/7/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html
1。ThreadDeath几乎可以从任何代码里被抛出。
2。ThreadDeath可能被catch后重新抛出。

灵芸 2017-07-22 1 楼

说一个简单的方式:
1.声明一个静态变量(数组)
2.线程定时更新数组,比如++
3.程序定时监控数组,如果发现线程没有更新变量,则认为线程死亡

简单example:

Thread t1;
Thread t2;
static int i;
t1.run(){
i++;
sleep(100);
}
t2.run(){
int tmp;
if(tmp<=i){
t1死亡;
}
tmp=i;
}