java -------饿汉式/懒汉式 单例构造

  • 单例设计模式:保证类在内存中只有一个对象。

  • 如何保证类在内存中只有一个对象呢?

    • (1)控制类的创建,不让其他类来创建本类的对象。private

    • (2)在本类中定义一个本类的对象 。Singleton s;

  • (3)提供公共的访问方式。 public static Singleton getInstance(){return s}

    package com.heima.thread;
    
    public class Demo4_Thread {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		
    		Singleton s1 = Singleton.getInstance();
    		Singleton s2 = Singleton.getInstance();
    		
    		
    
    	}
    
    }
    
    //懒汉式单例设计模式
    //class Singleton {
    //	
    //	//1.私有构造方法
    //	
    //	private Singleton(){};
    //	
    //	//2.申明一个引用,不过要将这个什么方法私有了。
    //	
    //	private static Singleton s ;
    //	
    //	//3.对外提供公共的访问方法
    //	
    //	public static Singleton getInstance(){
    //		
    //		if (s == null){
    
    			//在这里容易产生多线程问题,容容易创建多个对象
    			//多次判断也会增加时间,不利于效率。
    //			
    //			s = new Singleton();
    //			
    //		}
    //		return s ;
    //	}
    //}
    
    
    //懒汉式单例设计模型 (开发用这种)
    class Singleton{
    	
    	//1.私有构造方法
    	private  Singleton(){};
    	
    	//2.创造本类对象
    	
    	public static Singleton s = new Singleton();
    	
    	//3.对外提供公共的访问方法
    	
    	public static Singleton getInstance() {
    		
    		return s;
    		
    	}
    	
    	
    }
    

    懒汉式和饿汉式的区别:

  • 饿汉式是空间换时间,懒汉式是时间换空间

  • 在多线程访问时,饿汉式不会创建多个对象,而懒汉式有可能会创建多个对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值