关于单例(饿汉式与懒汉式)

Posted glacial_water

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于单例(饿汉式与懒汉式)相关的知识,希望对你有一定的参考价值。

饿汉式单例:

 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 }
View Code

懒汉式单例:

 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 }
View Code

测试代码:

 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 }
View Code

运行效果1:

运行效果2:

以上是关于关于单例(饿汉式与懒汉式)的主要内容,如果未能解决你的问题,请参考以下文章

单例模式详解:懒汉式与饿汉式

单例模式之懒汉式与饿汉式

单例设计模式的懒汉式与饿汉式

java软件设计模式——单例设计模式中的饿汉式与 懒汉式示例

对象初始化过程与单例设计模式(饿汉式与懒汉式)

java学习之单例模式(饿汉式与懒汉式)