Java单例模式《二》懒汉式

 1 package com.study.mode;
 2 /**
 3  * 单例模式:  懒汉式,需要的时候创建。
 4  * @ClassName: SingleBean2 
 5  * @author BlueLake
 6  * @date 2012年9月5日 下午9:08:21
 7  */
 8 public class SingleBean2 {
 9 
10     //1.私有化构造方法。
11     private SingleBean2(){
12         
13     }
14     //2.创建一个当前类的静态属性
15     private static SingleBean2 single = null;
16 
17     //3.1 在需要的时候,创建对象。
18     public static SingleBean2 getSingleA(){
19         if(single==null){
20             single = new SingleBean2();
21         }
22         return single;
23     }
24 
25     //3.2    由于3.1的方法线程不安全,多线程时会有多个SingleBean2实例。所以加锁
26     public synchronized static SingleBean2 getSingleB(){
27         if(single==null){
28             single = new SingleBean2();
29         }
30         return single;
31     }
32 
33     //3.3 ,由于每次调用3.2这个方法都要加锁,如果有的话直接返回就可以了,所以浪费内存
34     public static SingleBean2 getSingleC(){
35         //如果存在,直接返回,这里不用锁
36         if(single== null){
37             //如果,不存在,加锁,创建
38             synchronized(SingleBean2.class){
39                 //强壮性考虑,创建前,判断
40                 if(single==null){
41                     single = new SingleBean2();
42                 }
43             }
44         }
45         return single;
46     }
47 }

 

posted @ 2017-09-10 16:37  溪山晴雪  阅读(128)  评论(0编辑  收藏  举报