zoukankan      html  css  js  c++  java
  • java-单例,模式 线程安全实现方法

    1. //内部类实现懒汉式    
    2. public class Singleton    
    3.         
    4.     private static class SingletonHolder{    
    5.         //单例变量      
    6.         private static final Singleton instance new Singleton();    
    7.        
    8.         
    9.     //私有化的构造方法,保证外部的类不能通过构造器来实例化。    
    10.     private Singleton()    
    11.             
    12.        
    13.         
    14.     //获取单例对象实例    
    15.     public static Singleton getInstance()    
    16.       //   System.out.println("我是内部类单例!");    
    17.         return SingletonHolder.instance;    
    18.        
    19. }    


    懒汉式(避免资源浪费)、线程安全、代码简单。因为方法第一次调用的时候才会被加载(实现了lazy),而且其加载过程是线程安全的(实现线程安全)。内部类加载的时候实例化一次instance。
    private static class SingletonHolder 排它锁,只有一个线程可以访问

    //下面用枚举方式实现单例

    1. 
      public class EnumSingleton{
          private EnumSingleton(){}
          public static EnumSingleton getInstance(){
              return Singleton.INSTANCE.getInstance();
          }
          
          private static enum Singleton{
              INSTANCE;
              
              private EnumSingleton singleton;
              //JVM会保证此方法绝对只调用一次
              private Singleton(){
                  singleton = new EnumSingleton();
              }
              public EnumSingleton getInstance(){
                  return singleton;
              }
          }
      }
      

  • 相关阅读:
    MongoVUE 使用教程
    Mongo
    thinkPHP
    从关系型数据库到非关系型数据库
    boost 文件系统
    boost 随机数发生器
    CString/string 区别及其转化
    boost uuid
    使用命令行解析php文件
    Log4PHP日志库使用
  • 原文地址:https://www.cnblogs.com/luckForever/p/7254119.html
Copyright © 2011-2022 走看看