1

我猜测我们的代码库中有不正确的代码,但我不确定。所以我们得到了这样的 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 的瓶颈。

谢谢,V。

4

1 回答 1

1

两个调用将同时运行,除非您使用“同步”块或“写锁”来限制访问。

于 2012-09-04T10:54:07.923 回答