单列模式

什么事单例设计模式

  jvm保证只能有一个实例

分为两种:一种懒汉式,饿汉式

  懒汉式:线程不安全,是需要的时候才创建

  懒汉:双重检验锁

  饿汉式:线程天生安全,jvmclass加载的时候就初始化

  

懒汉式代码:

  

class SingletonTest {

     publicstaticvoid main(String[] args) {

         Singleton sl1 = Singleton.getSingleton();

         Singleton sl2 = Singleton.getSingleton();

         System.out.println(sl1 == sl2);

     }

}

 

publicclass Singleton {

     // 当需要的才会被实例化

     privatestatic Singleton singleton;

     private Singleton() {

     }

     synchronizedpublicstatic Singleton getSingleton() {

         if (singleton == null) {

              singleton = new Singleton();

         }

         returnsingleton;

     }

}

 

双重检验锁

  

     // 懒汉式 第二种写法 效率高    双重检验锁

     staticpublic Singleton getSingleton2() {

 

         if (singleton == null) { // 第一步检验锁

              synchronized (Singleton.class) {  // 第二步检验锁

                   if (singleton == null) {

                       singleton = new Singleton();

                   }

 

              }

         }

 

         returnsingleton;

     }

 

 

 

饿汉式代码

  

class SingletonTest1 {

         publicstaticvoid main(String[] args) {

                   Singleton1 sl1 = Singleton1.getSingleton();

                   Singleton1 sl2 = Singleton1.getSingleton();

                   System.out.println((sl1 == sl2)+"-");

         }

}

publicclass Singleton1 {

         //class 文件被加载初始化

         privatestatic Singleton1 singleton = new Singleton1();

         private Singleton1() {

         }

         publicstatic Singleton1 getSingleton() {

                   returnsingleton;

         }

 

}

posted @ 2017-12-25 10:35  zhouwen周文  阅读(77)  评论(0编辑  收藏  举报