Краткий ответ на ваш вопрос : ДА, вам нужно позаботиться о проблемах параллелизма, когда ваш код JMS обновляет какой-то распространенный объект в памяти.
Тем не менее, я не уверен, что вы подразумеваете под "общей таблицей значений тока"? Если это какая-то таблица базы данных, то база данных должна позаботиться о проблемах параллелизма.
РЕДАКТИРОВАТЬ: оказалось, что "таблица общих текущих значений" является общим объектом в памяти. Как я упоминал ранее, в этом случае вам нужно самим решать проблемы параллелизма ( Учебник по параллелизму Java ).
Существует в основном два подхода к этой проблеме:
- синхронизация - подходит, если у вас низкий уровень конкуренции или вы застряли на каком-то не поточном объекте , тогда ваш лучший выбор - синхронизация.
- высокоуровневые объекты параллелизма , поставляемые с JDK - лучше всего подходят, если у вас high-contention и вы используете какой-то класс из обычных коллекций ; просто поменяйте местами экземпляры одновременных коллекций .
В любом случае настоятельно рекомендуется провести собственное тестирование , чтобы выбрать наиболее подходящий для вас подход.
Если вы будете иметь дело с дорогостоящим созданием не потокового процедурного кода без сохранения состояния (без хранения данных), то вы также можете использовать пул объектов (например, Commons Pool ), но это не относится к вашей текущей проблеме.
JMS onMessage()
метод всегда вызывается потоком провайдера JMS (также известен как асинхронный вызов).