在 EJB 环境中,如何强制与资源集合中的任何给定资源进行单线程交互,而不限制对集合本身的访问?我想允许一个线程与资源A交互,而另一个线程与资源B交互;但禁止两个线程同时与同一资源交互。
背景故事: 我的网络上有多个设备,并且我的应用程序中有多个线程可能想要与任何给定的设备进行通信。设备本身是哑的,没有 session 的概念,这意味着,如果没有访问控制机制,从不同线程到同一设备的消息可能会交错。
设备池可能有数百个,但不是数千个。它也有点动态——设备出现和掉落。
我可以推出自己的类来管理单个设备的并发性,为每个设备实例化一个类,然后使用一个单例 bean 来管理集合并将请求分派(dispatch)到各个实例。
但是大部分或全部这些都必须已经在 Java 并发机制中的某个地方得到处理?
这里有我应该使用的成熟模式吗?
最佳答案
您确定要使用 EJB 来实现此目的吗?不鼓励混合标准 Java 并发机制和 JavaEE...
参见: why-spawning-threads-in-java-ee-container-is-discouraged
关于java - EJB 强制对资源集合的各个成员进行单线程访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26146354/