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

    import java.util.concurrent.locks.Lock;
    import java.util.concurrent.locks.ReentrantLock;
    
    /**
     * 单例模式
     * 要点:私有化构造函数
     *         对象为类的属性
     */
    public class Singleton {
        public static void main(String[] args) {
            //可以用对象方法
            Singleton_01 singleton_01 = Singleton_01.getSingleton_01();
            //直接用类的方法
            Singleton_01.doSomething();
        }
    }
    //饿汉,线程安全
    class Singleton_01{
        private Singleton_01(){}//1.私有化,不让外部创建
        private static Singleton_01 singleton_01 = new Singleton_01();//2.类加载的时候就创建
        //必须为静态哇,不然外面调不了
        public static Singleton_01 getSingleton_01(){
            return singleton_01;
        }
        //类中其他方法,尽量是static,类方法,与对象没啥关系
        public static void doSomething(){
        }
    }
    //懒,线程有隐患,用个加锁解决吧
    class Singleton_02{
        static Lock lock = new ReentrantLock();
        private Singleton_02(){}
        private static Singleton_02 singleton_02 = null;
        public static Singleton_02 getSingleton_02(){
            lock.lock();
            //线程同时卡在这儿的话,会进入再次创建
            if (singleton_02 == null) {
                singleton_02 = new Singleton_02();
            }
            lock.unlock();
            return singleton_02;
        }
    }
    //双重加锁,当已经创建过实例对象后就无需加锁,提高效率
    class Singleton_03 {
        private Singleton_03(){}
        private static Singleton_03 singleton;
    
        public static Singleton_03 getInstance(){
            if(singleton == null){
                synchronized(Singleton_03.class){
                    if(singleton == null){
                        singleton = new Singleton_03();
                    }
                }
            }
            return singleton;
        }
    }
    
    
    
     
  • 相关阅读:
    mysql导入报错: Incorrect string value: 'xF0xA0x83x8CxE5x8D...' for column 'q_title' at row 4
    spring原理解析
    php连接mysql报错The server requested authentication method unknown to the client
    springmvc快速入门
    set集合
    Linux安装MySQL5.7
    Java中jar包获取资源文件的方式
    ⚡王道数据结构绪论⚡
    ❤️排序❤️
    😊考研线代知识点汇总😊
  • 原文地址:https://www.cnblogs.com/fengdaren/p/8832932.html
Copyright © 2011-2022 走看看