我猜测我们的代码库中存在错误的代码,但我不确定。所以我们有这样的 EJB:
@Stateless
public class MyEjb {
private static Something sg = new Something();
public void doSomething() {
sg.execute();
}
}
Something 类是一个普通类:
public class Something {
public void execute() {
...
}
}
由于 MyEJB 是无状态 EJB,因此 doSomething 方法可以同时调用多次。
我的问题是:如果 doSomething() 同时被调用两次,那么其中一个调用将被阻塞,直到第一个调用完成?我的猜测是它被阻止了,因为只有一个静态实例。
如果我是对的,上面的代码并不好,因为“Something”类的“execute”方法是我的 EJB 的瓶颈。
谢谢, 五、
最佳答案
两个调用将同时运行,除非您使用“同步” block 或“写锁”限制访问。
关于java - 调用EJB中静态实例的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12261884/