0
鑑於鎳元素氮名單並行排序的任務執行者,我需要調用每個元素給定的方法:在Java中捕獲異常
process(element);
處理每個列表中的所有鎳元素的秩序,一旦完成後,我必須知道哪些元素已處理,哪些已拋出異常。
是否有任何已執行的執行程序可以獲取任務列表,將按順序處理它們並記錄故障?
鑑於鎳元素氮名單並行排序的任務執行者,我需要調用每個元素給定的方法:在Java中捕獲異常
process(element);
處理每個列表中的所有鎳元素的秩序,一旦完成後,我必須知道哪些元素已處理,哪些已拋出異常。
是否有任何已執行的執行程序可以獲取任務列表,將按順序處理它們並記錄故障?
簡短的回答是否定的。
龍答:沒有,因爲它在不到20行代碼輕鬆實現:
public static void main(String[] args) {
List<Integer> elements = Arrays.asList(1, 2, 3, 5, 8, 13);
ExecutorService executor = Executors.newSingleThreadExecutor();
List<Future<Integer>> results = elements.stream().map((e) -> {
return executor.submit(() -> {
// Fail for even numbers
if (e % 2 == 0) {
throw new RuntimeException();
}
return e;
});
}).collect(Collectors.toList());
results.forEach((e) -> {
try {
System.out.println(e.get());
} catch (InterruptedException | ExecutionException e1) {
System.out.println(false);
}
});
}
將輸出:
1
false
3
5
false
13
儘管這不是你在尋找什麼,但你可以查看ExecutorService的invokeAll()方法。 –
*'爲了'*是什麼意思?是否有可能開始處理新的列表,而前一個尚未完全處理?如果以前的項目尚未處理,是否有可能開始處理列表的新項目? –