Spring Batch - Как прочитать один большой файл в несколько потоков? - PullRequest
5 голосов
/ 01 сентября 2011

Проблема: прочитайте файл размером> 10 МБ и загрузите его в промежуточную таблицу с помощью Spring Batch. Как мы можем поддерживать состояние при чтении файла, чтобы перезапустить работу, если она не удалась?

В соответствии с документацией FileItemReader не является поточно-ориентированным, и если мы попытаемся сделать его поточно-безопасным, мы в конечном итоге теряем возможность перезапуска. Итак, основные вопросы:

  1. Есть ли способ прочитать файл в блоках, и каждый поток знает, какой блок ему нужно прочитать?
  2. Если мы сделаем чтение синхронным, какие изменения потребуются для перезапуска задания в этом сценарии?

Если кто-либо сталкивался с подобными проблемами или проанализировал, как он работает, это поможет нам принять решение.

Также приветствуются любые указатели или примеры кодов.

1 Ответ

3 голосов
/ 03 октября 2011

Многопоточность полезна, только если ваши потоки делают разные вещи одновременно.Например, вы можете иметь два потока, работающих на разных процессорах.Или один поток может ожидать сетевого сообщения, в то время как другой рисует экран.

Но в вашем случае оба потока будут ожидать одного и того же ввода-вывода с одного и того же устройства, поэтому нет смысла использовать больше, чемone.

См. также этот вопрос Чтение файла несколькими потоками

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...