zoukankan      html  css  js  c++  java
  • 单例模式

    懒加载,线程不安全 
    1. public class Singleton {
    2. private static Singleton instance;
    3. private Singleton(){}
    4. public static Singleton getInstance(){
    5. if(instance == null){
    6. instance = new Singleton();
    7. }
    8. return instance;
    9. }
    10. }
    懒加载,线程安全,线程方法排序
    1. public class Singleton {
    2. private static Singleton instance;
    3. private Singleton(){}
    4. public static synchronized Singleton getInstance(){
    5. if(instance == null){
    6. instance = new Singleton();
    7. }
    8. return instance;
    9. }
    10. }
    synchronized表示多线程排序执行方法。
    懒加载,线程安全,线程属性传递
    1. public class Singleton {
    2. private volatile static Singleton instance;
    3. private Singleton(){}
    4. public static Singleton getInstance(){
    5. if(instance == null){
    6. instance = new Singleton();
    7. }
    8. return instance;
    9. }
    10. }
    volatile表示变量修改最后的值。
    类加载,线程安全
    1. public class Singleton {
    2. private static Singleton instance = new Singleton();
    3. private Singleton(){}
    4. public static Singleton getInstance(){
    5. return instance;
    6. }
    7. }
    静态内部类加载,线程安全
    1. public class Singleton {
    2. private static class SingletonHolder{
    3. private static final Singleton INSTANCE = new Singleton();
    4. }
    5. private Singleton(){}
    6. public static Singleton getInstance(){
    7. return SingletonHolder.INSTANCE;
    8. }
    9. }
    枚举
    1. public enum Singleton {
    2. INSTANCE;
    3.    private Single(){}
    4. public void whateverMethod(){}
    5. }






  • 相关阅读:
    尺取法 C
    并查集
    欧拉路与欧拉回路
    C
    最大连续区间和算法总结
    C
    python中的random函数方法
    Python可视化
    MFC学习之模态对话框和非模态对话框
    dropna
  • 原文地址:https://www.cnblogs.com/RocketMan/p/6400139.html
Copyright © 2011-2022 走看看