【发布时间】:2012-10-09 22:12:05
【问题描述】:
我正在尝试运行以下代码:
public static void main(String[] args){
ScheduledExecutorService service = new ScheduledThreadPoolExecutor(2);
Runnable r = new Runnable() {
@Override
public void run() {
throw new RuntimeException();
}
};
service.execute(r );
ScheduledFuture<?> schedule = service.schedule(r, 0, TimeUnit.SECONDS);
new Thread(r).run();
}
关于上述问题,我有以下问题:
- 有什么方法可以捕获和响应执行器线程上发生的异常?
- 为什么创建的线程的异常显式传播到主线程,但使用执行器服务的两次执行都没有传播该错误?怎么会发现这个错误?
编辑:想到另一个问题:
- 如何停止我安排的给定周期性任务,比如在 N 次重复或 N 分钟之后?
【问题讨论】:
-
今天我做了一个关于线程的讲座。我告诉我的学生们:如果我觉得淘气,我会有代码供你在考试中分析。该代码可能包含 t.run(),而不是 t.start()。
-
看我的更新已经解决了
标签: java multithreading executorservice