码迷,mamicode.com
首页 > 其他好文 > 详细

单例模式

时间:2015-03-20 14:18:03      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:

1. 单例模式

以下是恶汉模式,类初始化的时候,就进行了new对象,如果没有调用getInstance方法,那么系统就提前消耗掉了内存

  public class  singleton {
       
     private static singleton  sing = new singleton();
      
     private singleton (){}
     
     public static singleton  getInstance (){
           return sing;
     }
 }

 


2. 以下为懒汉模式

   此时的懒汉模式,是线程不安全的,当多线程访问的时候,会同时new多个实例

1.package net.chopsuey.singleton;   
2.  
3.public final class LazySingleton   
4.{   
5.    private static LazySingleton singObj = null;   
6.  
7.    private LazySingleton()   
8.    {   
9.    }   
10.  
11.    public static LazySingleton getSingleInstance()   
12.    {   
13.        if (singObj == null)   
14.        {   
15.            singObj = new LazySingleton();   
16.        }   
17.        return singObj;   
18.    } 

为解决多线程问题,可以写一个内部类,当使用的时候才去实例化

一个静态内部类内的一个静态成员就可以保证它只在类被加载时只初始化一次。因此不管有多少个线程来调用它,都只能得到同个实例(类被加载时初始化的那个)。

  public class  singleton {
     static class  Userleton {
        static sinleton sing = new singleton();
             
      }    
      
      public singleton getInstance(){
         return Userleton.sing;
  }   
    

 

单例模式

标签:

原文地址:http://www.cnblogs.com/holdon521/p/4353456.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!