Как в среде EJB я могу заставить взаимодействие с любым заданным ресурсом в совокупности ресурсов быть однопоточным, не ограничивая доступ к самой коллекции? Я хочу разрешить одному потоку взаимодействовать с ресурсом A, а другой взаимодействует с ресурсом B; но запрещают одновременное взаимодействие двух потоков с одним и тем же ресурсом.
Предыстория: у меня есть несколько устройств в сети и несколько потоков в моем приложении, которые могут захотеть поговорить с любым устройством. Сами устройства являются немыми и не имеют понятия сеанса, а это означает, что без механизма контроля доступа вероятность того, что сообщения из разных потоков на одно и то же устройство будут чередоваться.
Пул устройств - это сотни, но не тысячи. Это также несколько динамично - устройства появляются и падают.
Я мог бы свернуть собственный класс, который управляет параллелизмом для одного устройства, создать экземпляр для каждого устройства, а затем использовать одноэлементный компонент, который управляет сбором и отправляет запросы отдельным экземплярам.
Но большинство или все это должно быть уже рассмотрено, где-то в механизмах параллелизма Java?
Есть ли устоявшийся образец, который я должен использовать?
Вы уверены, что хотите использовать EJB для этого? Смешивание стандартных java-параллельных механизмов и JavaEE скорее обескураживается...
Смотрите: почему-нереститься-нить-в-java-ee-контейнер-обескуражен