zoukankan      html  css  js  c++  java
  • 单例模式&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;
        }
    }
    
    


  • 相关阅读:
    团队项目-Beta冲刺(第一周)
    个人第4次作业—Alpha项目测试
    团队项目——Alpha发布2
    优课堂考勤系统——Alpha发布1
    优课堂—系统设计
    优课堂—需求分析
    thrift学习笔记
    APP分享
    ActionBar
    ListView添加headview
  • 原文地址:https://www.cnblogs.com/TendToBigData/p/10501326.html
Copyright © 2011-2022 走看看