• 单例模式&synchronized


    package com.ibm.dg;
    
    public class Main {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            
            SingletonClass s1 =SingletonClass.getInstall();
            SingletonClass s2 = SingletonClass.getInstall();
            
            System.out.println(s1==s2);   //true
            System.out.println(s1.equals(s2));  //true
        }
    }
    
    //单例模式的应用场景 与机会 :
    //一般情况下这个在项目中都是怎么使用呢 ?
    //资源池创建连接 ,数据库连接 ,但是 一般数据库都是用连接池的 ,单例模式会造成等待
    
    package com.ibm.dg;
    
    public class SingletonClass {
        
        private SingletonClass(){} //定义私有构造方法
        private static SingletonClass install=null;
        public static SingletonClass getInstall(){
            if(install == null){
                synchronized(SingletonClass.class){ //synchronized 当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,
                                                   //一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。
                    if(install == null){
                        install = new SingletonClass();
                    }
                }
            }
            return install;
        }
    }
    
    


  • 相关阅读:
    poj3537--Crosses and Crosses
    poj3480--John
    poj2975--Nim
    poj2960 S-Nim
    poj2505-A multplication game
    Team Queue(POJ 2259)
    将caffemodel文件转换为Matlab可用的数据形式
    Invalid MEX-file: caffe.mexa64 的解决方案
    mongoDB-3.x启用认证
    mongoDB跨平台图形管理工具
  • 原文地址:https://www.cnblogs.com/TendToBigData/p/10501326.html
Copyright © 2020-2023  润新知