Controller方法加了synchronized , service的方法就不用加synchronized 了吧?假如说这个service只有这一个Controller调用。
这样就能做到只有一个线程访问,对吗?
Controller方法加了synchronized , service的方法就不用加synchronized 了吧?假如说这个service只有这一个Controller调用。
这样就能做到只有一个线程访问,对吗?
嗯,个人感觉加在 service
要好一点,因为串行化
的代码变短了。而且处理逻辑的也是在service
。加到入口,那么controller,service
线程都是串行的,类比Hashmap
和CounrrentHashmap
,CounrrentHashmap
里面有个分段锁,就是为了缩短synchronized修饰的区域。
懒汉式加同步方法
public class Singleton {
// 实例变量
private byte[] bate = new byte[1024];
// 私有的构造函数,即不允许外部 new
private Singleton(){ }
private static Singleton singleton =null;
public static synchronized Singleton getInstance0(){
if (singleton == null) {
singleton = new Singleton();
}
return singleton;
}
双重效验锁单例
public class Singleton {
// 实例变量
private byte[] bate = new byte[1024];
// 私有的构造函数,即不允许外部 new
private Singleton(){ }
private static volatile Singleton singleton2 = null;
public static Singleton getInstance4() {
if (singleton2 == null){
synchronized (Singleton.class){
if (singleton2 ==null){
singleton2 = new Singleton();
}
}
}
return singleton2;
}