package GOGO; /** * 单机版下的单例模式 */ public class SingletonDemo { private static SingletonDemo instance = null; //构造器独一份 private SingletonDemo(){ //如果只有一个实例,该句话只被打印一次 System.out.println(Thread.currentThread().getName()+"\t 我是构造方法"); } public static SingletonDemo getInstance(){ if (instance == null) instance = new SingletonDemo(); return instance; } public static void main(String[] args) { //单线程 System.out.println(SingletonDemo.getInstance() == SingletonDemo.getInstance()); System.out.println(SingletonDemo.getInstance() == SingletonDemo.getInstance()); System.out.println(SingletonDemo.getInstance() == SingletonDemo.getInstance()); System.out.println("======================="); //并发多线程,就会出现很多问题,会创建很多实例,可以对getInstance加synchronized,但是太重,并发效率降低 for (int i = 1; i < 10; i++) { new Thread(()->{ SingletonDemo.getInstance(); },String.valueOf(i)).start(); } } }
单机版下的单例模式
最新推荐文章于 2022-01-03 16:19:18 发布