我理解的单件模式 JVMIBMJDKthreadJ#
程序员文章站
2024-01-23 21:37:34
...
性能、安全最好的单件书写模式
public class Singleton{
//volatile 仅仅在JDK5+有效,跟同步块synchronized一起使用,可提高同步性能。如果读操作远远超过写操作,可以结合使用内部锁和 volatile 变量来减少公共代码路径的开销
private volatile static Singleton test;
private Singleton(){}
public static Singleton getInstance(){
if(test == null){
synchronized(Singleton.class){
if(test==null){
test = new Singleton();
}
}
}
return test;
}
}
注意: 1.单件必须保证使用同一个类加载器
2. jdk1.2中的单件在无引用的情况下会被垃圾回收
3. 单件类中必须使用静态变量,因为方法是静态的,而且方法必须是静态的
public class Singleton{
//volatile 仅仅在JDK5+有效,跟同步块synchronized一起使用,可提高同步性能。如果读操作远远超过写操作,可以结合使用内部锁和 volatile 变量来减少公共代码路径的开销
private volatile static Singleton test;
private Singleton(){}
public static Singleton getInstance(){
if(test == null){
synchronized(Singleton.class){
if(test==null){
test = new Singleton();
}
}
}
return test;
}
}
注意: 1.单件必须保证使用同一个类加载器
2. jdk1.2中的单件在无引用的情况下会被垃圾回收
3. 单件类中必须使用静态变量,因为方法是静态的,而且方法必须是静态的