13
回答
java中怎么判断线程将要死亡(怎么得到死亡通知)?
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

  在java中,怎么判断线程将要死亡或者已经死亡(或者理解为得到java线程死亡通知)?

  网上搜了下,没什么答案,哪位大神能帮我解决下?

举报
共有13个答案 最后回答: 4年前
线程执行完run方法就死亡了,想知道将要死亡可以在run方法最后通知你线程死亡,死亡后的线程无法得到
CyclicBarrier cb = new CyclicBarrier(4, new MainTask());
ExecutorService pool = Executors.newCachedThreadPool();
pool.execute(new ChildTask(cb));
pool.execute(new ChildTask(cb));
pool.execute(new ChildTask(cb));

pool.execute(new ChildTask(cb));

可以用CyclicBarrier,等到4个子线程执行完毕后会调用MainTask()线程。这样相当于获取了4个子线程已经死亡信息

干嘛一定要用java内置的API来解决这个问题呢,try...finally一下就解决了
public class MyRunner implements Runnable {

	@Override
	public void run() {
		try{
			//TODO:该干啥干啥
		}finally{
			System.out.println("我将在100纳秒内死亡,可不可以抢救下");
			//TODO:发求救信号或者死亡通知
		}
	}
}
顶部