2013-03-01 4 views
0

Мое требование: Существует центральный репозиторий, в котором пользователь будет размещать несколько xml-файлов, наш сервисный ресурс нашего каталога (простой класс java) будет собирать файлы xml и обрабатывать его.Параллельная обработка нескольких файлов в java

В этом случае, как мы можем идти на параллельную обработку? Должны ли мы идти по одной обработке xml или параллельной обработке?

Обычно в живых проектах, подход которых мы должны взять?

+1

Если файл находится в ГБ или очень большой, нет смысла делать это одновременно. У меня есть файлы размером около 100 МБ, и это почти занимает 25 секунд, чтобы разобрать его полностью. Работа над улучшением анализа, а не одновременным извлечением – Jatin

+0

Вы можете настроить его. Если количество обрабатываемых файлов, скажем, больше, чем число x, обрабатывайте их параллельно с помощью многопоточности, иначе сделайте это один за другим. –

ответ

0

В этом случае, как мы можем идти на параллельную обработку?

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

Должны ли мы идти по одной обработке или параллельной обработке xml?

Это зависит от того, как быстро вы хотите, чтобы обработка сделали и другие факторы например, будет ли обработка отделиться в течение или будет обработка необходим доступ к другим уже в настоящее время файлы, вы в какой-то момент нужно ждать других ресурсов ?

Обычно в живых проектах, подход которых мы должны взять?

Параллельная обработка может быть быстрее, но может потребоваться немного больше памяти

+0

, если мы идем для параллельной обработки, тогда я должен следовать ниже ссылки http://www.javacodegeeks.com/2011/12/using-threadpoolexecutor-to-parallelize.html Если я буду искать один за другим обработку xml, тогда как Я реализую это? – user739115

0

В этом случае далеко и далеко ваша самая большая стоимость будет IO, если вы делаете что-то с данными, которые одинаково дорого (скажем, с другой услугой)

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

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

Смежные вопросы