这是我的单例类:
import javax.ejb.Lock;
import javax.ejb.LockType;
import javax.ejb.Singleton;
@Singleton
public class TestSingletons implements TestSingletonsRemote{
@Lock(LockType.READ)
@Override
public void foo(int id) {
bar(id);
}
private void bar(int id){
// do stuff
}
}
方法foo
有一个LockType.READ
,所以它可以被并发访问。 foo
实际上除了调用类 bar
的私有(private)方法之外什么都不做,它没有被注释,所以默认情况下它应该有一个 LockType.WRITE
锁模式。
正如您可能从上述场景中猜到的那样,问题是:
对 foo
的调用实际上是并发的吗?
最佳答案
您的bar
方法是私有(private)的,不是业务方法。
默认LockType.WRITE
仅适用于业务方法。
关于java - ejb - 调用同一实例的方法时的单例锁定模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32438665/