饿汉式单例:
1 package com.mon11.day27.single; 2 /** 3 * 类说明 : 4 * @author 作者 :chenyanlong 5 * @version 创建时间:2017年11月27日 6 */ 7 public class SingleTon { 8 // 饿汉式 线程全 9 private static SingleTon singleTon=new SingleTon(); 10 /*1.构造方法私有化*/ 11 private SingleTon(){ 12 13 } 14 /* 返回对象singleTon*/ 15 public static SingleTon getSingleTon() { 16 return singleTon; 17 } 18 19 20 }
懒汉式单例:
1 package com.mon11.day27.single; 2 /** 3 * 类说明 : 4 * @author 作者 :chenyanlong 5 * @version 创建时间:2017年11月27日 6 */ 7 public class SingleTonA { 8 // 饿汉式 线程全 9 private static SingleTonA singleTon=null; 10 /*1.构造方法私有化*/ 11 private SingleTonA(){ 12 13 } 14 15 /* 返回对象singleTon*/ 16 public static synchronized SingleTonA getSingleTon() { 17 if(singleTon==null){ 18 //SingleTonA singleTon=new SingleTonA();//测试为空 19 singleTon=new SingleTonA();//测试ok 20 } 21 return singleTon; 22 } 23 24 25 }
测试代码:
1 package com.mon11.day27.single; 2 3 import static org.junit.Assert.*; 4 5 import org.junit.Test; 6 7 /** 8 * 类说明 : 9 * @author 作者 :chenyanlong 10 * @version 创建时间:2017年11月27日 11 */ 12 public class TestDemo { 13 14 //饿 15 @Test 16 public void test() { 17 SingleTon singleTon=SingleTon.getSingleTon(); 18 SingleTon singleTon1=SingleTon.getSingleTon(); 19 SingleTon singleTon2=SingleTon.getSingleTon(); 20 System.out.println(singleTon); 21 System.out.println(singleTon1); 22 System.out.println(singleTon2); 23 } 24 25 @Test 26 public void test1() { 27 SingleTonA singleTon=SingleTonA.getSingleTon(); 28 SingleTonA singleTon1=SingleTonA.getSingleTon(); 29 SingleTonA singleTon2=SingleTonA.getSingleTon(); 30 System.out.println(singleTon); 31 System.out.println(singleTon1); 32 System.out.println(singleTon2); 33 } 34 35 }
运行效果1:
运行效果2: