java - EJB 强制对资源集合的各个成员进行单线程访问

标签 java multithreading ejb

在 EJB 环境中,如何强制与资源集合中的任何给定资源进行单线程交互,而不限制对集合本身的访问?我想允许一个线程与资源A交互,而另一个线程与资源B交互;但禁止两个线程同时与同一资源交互。

背景故事: 我的网络上有多个设备,并且我的应用程序中有多个线程可能想要与任何给定的设备进行通信。设备本身是哑的,没有 session 的概念,这意味着,如果没有访问控制机制,从不同线程到同一设备的消息可能会交错。

设备池可能有数百个,但不是数千个。它也有点动态——设备出现和掉落。

我可以推出自己的类来管理单个设备的并发性,为每个设备实例化一个类,然后使用一个单例 bean 来管理集合并将请求分派(dispatch)到各个实例。

但是大部分或全部这些都必须已经在 J​​ava 并发机制中的某个地方得到处理?

这里有我应该使用的成熟模式吗?

最佳答案

您确定要使用 EJB 来实现此目的吗?不鼓励混合标准 Java 并发机制和 JavaEE...

参见: why-spawning-threads-in-java-ee-container-is-discouraged

关于java - EJB 强制对资源集合的各个成员进行单线程访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26146354/

相关文章:

java - 无法在Glassfish服务器的控制台上打印Date和String对象的值

jakarta-ee - 如何正确使用@Alternative 实现客户端

database - 我想做一个注册 JSF 表格

java - 如果一个方法只是调用 Java 中的另一个线程安全方法,它是否是线程安全的?

c# - 使用多线程提高速度

java - SwingUtilities.invokeLater(runnable) 和 Swing Timer 如何工作?

java - 如何在 GridLayoutManager 中改变每条偶数行的方向?

java - 使用 Join 方法的不同输出

java - 无法从证书中找到私钥

javascript - 从选中的单选按钮传递整数数组而不是数字字符串