Java Thread Загрузка нескольких файлов из одного каталога - PullRequest
1 голос
/ 25 июня 2011

Мне нужна стратегия загрузки файлов несколькими потоками из одного каталога без случайной загрузки одного файла несколькими потоками.

Решение:

  1. Разрешить каждому потоку последовательно собирать набор файлов для добавления в свою структуру данных, такую ​​как arraylist и параллельный процесс.

  2. Взять имя файла, в любом случае последнее5 цифр являются числами, у mod(last5digit,5) +1 будет выдано 1,2,3,4,5, и соответственно те файлы с результатом мод будут обработаны соответствующими Thread 1, ... Thread 5.

Я хочу решение, которое не должно иметь проблемы взаимного исключения. Пожалуйста, дайте мне знать ваши комментарии из вашего опыта.

Ответы [ 2 ]

1 голос
/ 25 июня 2011

По сути, любой потокобезопасный доступ к списку должен работать. Я думаю, что я бы:

  • поместить список файлов в BlockingQueue
  • чтобы каждый поток постоянно брал следующий элемент (файл) из очереди и обрабатывал его.
1 голос
/ 25 июня 2011

Вставьте все файлы в BlockingQueue и ваш пул потоков вытянет файлы из очереди.

Таким образом, к файлу не будет доступа одновременно, и взаимное исключение не требуется.

...