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

    饿汉式:一上来就把对象创建好了

    class Bank{
    //私有化当前类的构造器
       private Bank(){} 

    //在类的的内部创建对象 private static Bank bank=new Bank();


    //通过公共的方法,获取Bank实例 public static Bnak getInstance(){ return bank; } }

    懒汉式:延迟对象的创建,用才创建,但线程不安全

    class Applicaton{
         
        //私有化类的构造器
         private Application(){}
         
        //声明当前类的对象,使用private static 修饰
         private static Application app=null;
    
        //通过方法获取当前类的实例
        public static Application getInstance(){
        //判断是否已存在当前类的实例,单例模式只有一个当前类的实例,故必须判断
          if(app ==null){
              
              app=new Application();
    
               }
          //已存在就直接返回当前类的实例
              return app;
            }
    
    }            
    

     懒汉式的线程安全,同步代码块的写法

    package threadtest;
    /*
     * 线程安全下的懒汉模式
     */
    public class LanHan {
    
            public static void main(String[] args) {
                Applicaton a1=Applicaton.getInstance();
                Applicaton a2=Applicaton.getInstance();
                System.out.println(a1==a2);
            }
    }
    
    
    //懒汉式:延迟对象的创建,用才创建,但线程不安全
    
    class Applicaton{
         
        //私有化类的构造器
         private Applicaton(){}
         
        //声明当前类的对象,使用private static 修饰
         private static Applicaton app=null;
    
        //通过方法获取当前类的实例
        public  static Applicaton getInstance(){
         synchronized (Applicaton.class) {
            //判断是否已存在当前类的实例,单例模式只有一个当前类的实例,故必须判断
            if (app == null) {
    
                app = new Applicaton();
    
            }
        }
        //已存在就直接返回当前类的实例
          return app;
            }
    
    }            
     

    //同步方法的写法
    package
    threadtest; /* * 线程安全下的懒汉模式 */ public class LanHan { public static void main(String[] args) { Applicaton a1=Applicaton.getInstance(); Applicaton a2=Applicaton.getInstance(); System.out.println(a1==a2); } } //懒汉式:延迟对象的创建,用才创建,但线程不安全 class Applicaton{ //私有化类的构造器 private Applicaton(){} //声明当前类的对象,使用private static 修饰 private static Applicaton app=null; //通过方法获取当前类的实例 public synchronized static Applicaton getInstance(){ //判断是否已存在当前类的实例,单例模式只有一个当前类的实例,故必须判断 if(app ==null){ app=new Applicaton(); } //已存在就直接返回当前类的实例 return app; } }
  • 相关阅读:
    Error C1189: #error: Please use the /MD switch for _AFXDLL builds
    block,inline和inline-block概念和区别(转载)
    jQuery学习--Code Organization Concepts
    Kafka— —副本(均衡负载)
    Kafka实践1--Producer
    漫画HDFS工作原理(转)
    JavaScript学习笔记3
    搭建简单SBT工程实践
    Hive SQL测试
    SparkSql常用语句
  • 原文地址:https://www.cnblogs.com/ylblikestudyJava/p/12362773.html
Copyright © 2011-2022 走看看