gpt4 book ai didi

java - 如何在 J2EE EJB 中创建互斥锁

转载 作者:行者123 更新时间:2023-11-30 07:54:15 24 4
gpt4 key购买 nike

我对 J2EE 很陌生,如果这是显而易见的,我深表歉意。我必须解决糟糕的数据库设计,该设计的更新无法安全地并行完成。解决此问题的最简单方法(目前)是在方法调用周围放置互斥保护以序列化其访问。

我知道您不能安全地仅在 J2EE 中的方法上使用同步关键字,因为容器可能会干扰。 J2EE 中是否有一种“受支持”的方法来在 EJB 中创建互斥体/信号量/锁,以确保对整个 J2EE 应用程序的方法访问进行序列化?

最佳答案

尝试使用静态对象作为互斥体,例如:

private static final Object mutex = new Object ();

public void someMethod() {
synchronized(mutex) {
// do work that must be globally synchronous
}
}

在方法本身上使用 synchronized 对您不起作用的原因是,Java EE 容器可能会创建多个 EJB 实例,但标记为 synchronized 的方法是仅针对每个实例进行保护(其中每个实例一次只能有一个线程执行同步方法,但可以同时访问多个实例)。

关于java - 如何在 J2EE EJB 中创建互斥锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32899231/

24 4 0
文章推荐: java - Selenium WebDriver、使用 Java 的 TestNG
文章推荐: java - 具有缩小概念的三元运算符
文章推荐: javascript - 如何从另一个 Controller 调用一个 Controller 的功能
文章推荐: java - 将变量合并到 标记中以在 CMS (Joomla) 中使用