次のコードを実行しようとしています。
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();
}
上記に関して、以下の質問があります。
- エグゼキューターのスレッドで発生する例外をキャッチして応答する方法はありますか?
- 作成されたスレッドからの例外がメイン スレッドに明示的に伝播されるのに、executor サービスを使用した両方の実行でそのエラーが伝播されないのはなぜですか? このエラーはどのようにして発見できますか?
編集:もう1つの質問が頭に浮かびました:
- スケジュールした特定の定期的なタスクを停止するにはどうすればよいですか? たとえば、N 回の繰り返しまたは N 分後に言いましょう。