我正在尝试运行以下代码:
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 分钟之后?