У меня есть список имен
ArrayList<String> allPersion = new ArrayList<>();
allPersion.add("A");
allPersion.add("B");
...
allPersion.add("E");
Все они работают на 1 и 2
private List<String> work1(String _item) {}
private void work2(String data) {}
Я создаю тему, которая позволяет двум людям работать одновременно
ExecutorService executor = Executors.newFixedThreadPool(2);
allPersion.forEach((_item) -> {
Future<List<String>> submit = executor.submit(() -> {
return work1(_item);
});
try {
for (String data : submit.get()) {
work2(data);
}
} catch (InterruptedException | ExecutionException ex) {
Logger.getLogger(NewClass1.class.getName()).log(Level.SEVERE, null, ex);
}
});
executor.shutdown();
Я хочу запрограммировать себя следующим образом
PersionA ->work1
PersionB ->work1
->If PersionA finishes work1 before PersionB
+PersionA run work2
+While allowing PersionC to run the work1
+When PersionA finishes work 2
->If PersionC finishes work1 before PersionB
...
Мое утверждение, когда поток завершает выполнение, приостанавливается, когда я вызываю submit.get (), работа, выполняемая последовательно
Это не совсем то, что я хочу. Я не знаю, как решить это, пожалуйста, помогите мне