HTTP-запрос и пул потоков - PullRequest
0 голосов
/ 04 октября 2010

У меня есть эта проблема. Чтобы создать ответ на один http-запрос, мне нужно выполнить несколько задач, которые могут выполняться одновременно. Я могу выполнить эти задачи в Executor (пул потоков), но тогда мне нужно беспокоиться о параллелизме (синхронизации) в моем веб-приложении. Есть ли лучший способ решить эту проблему без использования пула потоков?

Спасибо

1 Ответ

1 голос
/ 04 октября 2010

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

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

Вы не можете иметь несколько потоков и не думать о синхронизации. Здесь нет серебряной пули.

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

...