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