zoukankan      html  css  js  c++  java
  • 019 单例模式的5种写法

    单例模式的定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点!

    1、懒汉

    public class Singleton {
        private static Singleton instance;
        private Singleton (){}
    
        public static synchronized Singleton getInstance() {
    		if (instance == null) {
    			instance = new Singleton();
    		}
    		return instance;
        }
    }
    

    2、饿汉

    public class Singleton {  
        private static Singleton instance = new Singleton();  
        private Singleton (){}  
        public static Singleton getInstance() {  
        	return instance;  
        }  
    }
    

    3、双重校验锁

    public class Singleton {
        private volatile static Singleton singleton;
        private Singleton (){}
        public static Singleton getSingleton() {
    		if (singleton == null) {
    			synchronized (Singleton.class) {
    				if (singleton == null) {
    					singleton = new Singleton();
    				}
    			}
    		}
    		return singleton;
        }
    }
    

    4、枚举

    public enum Singleton {
        INSTANCE;
        public void whateverMethod() {
        }
    }
    

    5、静态内部类

    public class Singleton {  
        private static class SingletonHolder {  
        	private static final Singleton INSTANCE = new Singleton();  
        }  
        private Singleton (){}  
        public static final Singleton getInstance() {  
        	return SingletonHolder.INSTANCE;  
        }  
    }
    

    本文永久更新地址:https://github.com/nnngu/LearningNotes/blob/master/Java%20Basis/019%20%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F%E7%9A%845%E7%A7%8D%E5%86%99%E6%B3%95.md

  • 相关阅读:
    Java并发编程:线程池的使用
    Java并发(理论知识)—— 线程安全性
    grid
    grid
    grid
    grid
    grid
    grid
    grid
    grid
  • 原文地址:https://www.cnblogs.com/nnngu/p/8467783.html
Copyright © 2011-2022 走看看