ejb - 调用同一实例的方法时的单例锁定模式?
ejb - Singleton lock mode when calling methods of same instance?
这是我的单身人士class:
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
实际上除了调用 class bar
的一个没有注解的私有方法,所以默认它应该有一个 LockType.WRITE
锁模式。
正如您从上述场景中猜测的那样,问题是:
对 foo
的调用实际上是并发的吗?
您的 bar
方法是私有的,不是商业方法。
默认LockType.WRITE
仅适用于业务方法。
这是我的单身人士class:
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
实际上除了调用 class bar
的一个没有注解的私有方法,所以默认它应该有一个 LockType.WRITE
锁模式。
正如您从上述场景中猜测的那样,问题是:
对 foo
的调用实际上是并发的吗?
您的 bar
方法是私有的,不是商业方法。
默认LockType.WRITE
仅适用于业务方法。