Вопрос простой, и я удивлен, что он не всплыл сразу, когда я его искал.
У меня есть файл CSV, потенциально очень большой, который нужно обработать. Каждую строку следует передать процессору до тех пор, пока не будут обработаны все строки. Для чтения файла CSV я буду использовать OpenCSV, который, по сути, предоставляет метод readNext (), который дает мне следующую строку. Если доступных строк больше нет, все процессоры должны завершить работу.
Для этого я создал действительно простой Groovy-скрипт, определил синхронный метод readNext () (поскольку чтение следующей строки на самом деле не занимает много времени), а затем создал несколько потоков, которые читают следующую строку и обрабатывают ее. Он работает нормально, но ...
Разве не должно быть встроенного решения, которое я мог бы просто использовать? Это не обработка коллекции gpars, потому что всегда предполагается, что в памяти уже есть коллекция. Вместо этого я не могу позволить себе прочитать все это в памяти, а затем обработать, это приведет к исключениям вне памяти.
Итак ... у кого-нибудь есть хороший шаблон для обработки CSV-файла "построчно" с помощью пары рабочих потоков?