私はExecutorServiceを持っており、タイムアウトを設定しました。次に、invokeAll()メソッドを使用してスレッドの実行を開始します。ExecutorServiceでキャンセルされたタスクを確認するには?
List<Callable<Portlet>> taskList = new ArrayList();
for (int i = 0; i < rules.size(); i++) {
Rule rule = rules.get(i);
Callable<Portlet> worker = new RuleExecuterThread(rule);
taskList.add(worker);
}
List<Future<Portlet>> invokedList = null
try {
invokedList = springThreadPoolTaskExecutor.getThreadPoolExecutor().invokeAll(taskList, 1200, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
LOGGER.error(e.getMessage(), e);
invokedList = new ArrayList<>();
}
List<Portlet> collectedList = new ArrayList<>();
for(Future<Portlet> t : invokedList) {
try {
collectedList.add(t.get());
} catch (CancellationException e) {
LOGGER.error(e.getMessage(), e);
}
}
取り消されたタスクは、CancellationException catchブロックで処理されます。私がしたいのは、キャンセルされたタスクオブジェクト(ルールオブジェクト)のインスタンスで、どのタスクがキャンセルされたかを確認したいのです。しかし、将来のオブジェクトにはそれに関する情報は含まれていません。
この情報はどのように入手できますか?
ありがとうございました。