Java: создание пула потоков в приложении сервера - PullRequest
2 голосов
/ 08 мая 2011

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

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

Это пример, который я нашел.

Это эффективно?Есть ли другая альтернатива?Любые предложения будут оценены.

Ответы [ 2 ]

4 голосов
/ 08 мая 2011

Создание собственных потоков в среде Java EE обычно является плохой идеей. Иногда это должно быть сделано, но вы не должны делать это, если есть альтернатива. Я не уверен, что именно вы пытаетесь сделать, и какую версию Java EE вы используете, но если это 6, то, возможно, вы могли бы использовать асинхронный EJB.

3 голосов
/ 08 мая 2011

Стандартное решение вашей проблемы - использование JMS. Каждый запрос должен быть включен в команду. Команда должна быть отправлена ​​как сообщение JMS в очередь. MDB (компонент, управляемый сообщениями) должен получать им сообщения и выполнять запрос асинхронно.

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

...