问题描述
- java如何得到线程结束的通知
-
java是如何知道某一个线程即将死掉的、虚拟机结束改线程、是注册监听器吗?求大神解答
解决方案
线程执行完了自动结束了,目前好像还没有方法对线程进行监听吧,或许你可以在执行的方法里写一个标记,监听这个标记
解决方案二:
runnable 现成结束不通知,但是 run方法运行到最后一行就算结束了。
Callable 也可是实现通知。
MyCallable task2 = new MyCallable(1);
MyCallable task3 = new MyCallable(2);
MyCallable task1 = new MyCallable(0);
// 创建一个执行任务的服务
ExecutorService es = Executors.newFixedThreadPool(3);
// 提交并执行任务,任务启动时返回了一个Future对象,
// 如果想得到任务执行的结果或者是异常可对这个Future对象进行操作
Future future1 = es.submit(task1);
// 获得第一个任务的结果,如果调用get方法,当前线程会等待任务执行完毕后才往下执行
System.out.println("task1: " + future1.get());
Future future2 = es.submit(task2);
// 等待5秒后,再停止第二个任务。因为第二个任务进行的是无限循环
Thread.sleep(5000);
System.out.println("task2 cancel: " + future2.cancel(true));
// 获取第三个任务的输出,因为执行第三个任务会引起异常
// 所以下面的语句将引起异常的抛出
Future future3 = es.submit(task3);
System.out.println("task3: " + future3.get());
时间: 2024-09-23 11:35:57