package com.hundsun.hsap.business.pbocprdbasedatservice.v1.model; import java.awt.image.SampleModel; /* * * 单例模式 * */ public class Single { //私有的构造函数 private Single(){ } //静态的成员变量 private static Single single; public void say(){ System.out.println("1"); } /* * 静态的公共获取方法 * 懒汉加载模式,第一次获取的时候才对单例进行示例化。 * 并发下第一次获取单例会导致多个。线程不安全。 * 需要加同步锁,在类对象上锁。哪个线程获取这个类对象锁,就先运行 * */ public static Single getInstance(){ if(single==null){ synchronized (Single.class){ if(single==null){ single=new Single(); } } } return single; } public static void main(String [] args){ Single.getInstance().say(); SingleSafe.getINstance().say(); SingleStatic.getInstance(); SingleEnum.INSTANCE.say(); } } /* 饿汉模式 类加载的时候就进行实例化,线程安全 * **/ class SingleSafe{ private SingleSafe (){ } private static SingleSafe singleSafe=new SingleSafe(); public static SingleSafe getINstance(){ return singleSafe; } public void say(){ System.out.println("2"); } } //使用静态内部类来实现单例模式 class SingleStatic{ public static class Singleholde{ public static SingleStatic INSTANNCE= new SingleStatic(); } public static SingleStatic getInstance(){ return Singleholde.INSTANNCE; } } enum SingleEnum{ INSTANCE; public void say(){ System.out.println("enum"); } }
单例模式懒汉,饿汉,静态内部类,和枚举实现
最新推荐文章于 2023-07-17 09:56:08 发布