单例模式

xiaoxiao2021-02-28  79

单例模式有懒汉式和饿汉式 先来懒汉式

public class Singleton { private static Singleton singleton; private Singleton(){} public static Singleton getInstance(){ if(singleton==null){ singleton = new Singleton(); } return singleton; } }

以上实现单例模式不是线程安全的

if(singleton==null){ synchronized (Singleton.class) { if(singleton == null){ singleton = new Singleton(); } } }

这种方式交double-check检查两次,保证并发安全以及性能。

饿汉式

private static Singleton singleton = new Singleton(); public Singleton(){} public static Singleton getInstance(){ return singleton; }

由于静态成员是随类加载而加载的,并且在内存中只有一份。

转载请注明原文地址: https://www.6miu.com/read-47526.html

最新回复(0)