Java 单例模式大乱斗
1、 饿汉模式 线程安全
public class SingleInstance1 {
private static SingleInstance1 single=new SingleInstance1();
private SingleInstance1(){
}
public static SingleInstance1 getInstance(){
return single;
}
}
2、饿汉模式 线程安全
public class SingleInstance2 {
private static SingleInstance2 single=null;
static{
single=new SingleInstance2 ();
}
private SingleInstance2 (){
}
public static SingleInstance1 getInstance(){
return single;
}
}
3、懒汉模式 线程不安全
public class SingleInstance3 {
private static SingleInstance3 single =null;
private SingleInstance3 (){
}
public static SingleInstance3 getInstance(){
if(single==null){
single=new SingleInstance3 ();
}
return single;
}
}
4、 懒汉模式 线程安全 效率低下
public class SingleInstance4 {
private static SingleInstance4 single =null;
private SingleInstance4 (){
}
public static synchronized SingleInstance4 getInstance(){
if(single==null){
single=new SingleInstance4 ();
}
return single;
}
}
5、懒汉模式 线程安全 效率低下
public class SingleInstance5 {
private static SingleInstance5 single =null;
private SingleInstance5 (){
}
public static SingleInstance5 getInstance(){
synchronized(SingleInstance5 .class){
if(single==null){
single=new SingleInstance5 ();
}
}
return single;
}
}
6、懒汉模式 线程安全
public class SingleInstance6 {
private static SingleInstance6 single =null;
private SingleInstance6 (){
}
public static SingleInstance6 getInstance(){
if(single==null){
synchronized(SingleInstance6 .class){
if(single==null){
single=new SingleInstance6 ();
}
}
}
return single;
}
}
7、 懒汉模式 线程安全 效率高 静态内部类
public class SingleInstance7 {
private SingleInstance7 (){
}
public static SingleInstance7 getInstance(){
return getSingleInstance.single;
}
private static class getSingleInstance{
private static SingleInstance7 single=new SingleInstance7 ();
}
}
8、 懒汉模式 线程安全 效率高 枚举
public enum SingleInstance8 {
INSTANCE;
}

浙公网安备 33010602011771号