У меня есть файл данных с тысячами строк. Я читаю их и сохраняю их в базе данных. Я хочу многопоточность этого процесса в партиях, например, 50 строк. Когда я прочитал в файле, 10 строк отправляются в ExecutorService.java Многопоточность - подача газа в ExecutorService
ExecutorService executor = Executors.newFixedThreadPool(5);`
я могу сделать ниже в в время цикла до моих строк конца ....
Future<Integer> future = executor.submit(callableObjectThatSaves10RowsAtOneTime);
Но я не хочу, чтобы прочитать весь файл в память, если обработка 10 строки занимают время. Я только хочу представить 5, пока один из потоков не вернется, а затем отправлю следующее.
Давайте предположим, что нить занимает 20 секунд, чтобы сохранить 10 записей, я не хочу, чтобы ExecutorService
кормить тысячи линий, поскольку процесс чтения продолжает читать и представить ExecutorService
Что является лучшим способ достичь этого?
Возможный дубликат http://stackoverflow.com/questions/1250643/how-to-wait-for-all-threads-to-finish-using-executorservice – Cratylus
@Cratylus это, безусловно, не дубликат вопроса, который вы связаны между собой. ОП задает вопрос о том, как уменьшить количество поставленных задач, чтобы избежать необходимости читать огромный файл сразу, а не как знать, когда все задачи будут завершены. – CodeBlind