常用的单例

版权声明:本文为博主原创文章,未经博主允许不得转载: https://blog.csdn.net/sinat_33381791/article/details/83759203

1.双重校验

  • 线程安全
public class Singleton{
private volatile static Singleton instance;
private Singleton(){};
public static Singleton getInstance(){
    if(null == instance){
      synchronized(Singleton.class){
           if(null == instance){
               instance = new Singleton();
           }
      }
    }
    return instance;
 } 
}

2.懒汉式

  • 线程不安全
public class Singleton{
private static Singleton instance;
private Singleton(){};
public static synchronized Singleton getInstance(){
    if(null == instance){
       instance = new Singleton();
      }
    return instance;
 }
}

3.饿汉式

  • 线程安全
public class Singleton{
private static Singleton instance = new Singleton();
private Singleton(){};
public static Singleton getInstance(){
   return instance; 
  }
}

猜你喜欢

转载自blog.csdn.net/sinat_33381791/article/details/83759203