Skip to content

1. 单例模式

Landy.Liu edited this page May 18, 2019 · 1 revision

1. 单例模式

1.1 线程安全

内部类实现线程安全的单例模式

1.2 单例的实现

常用单例模式写法:饿汉式、懒汉式、注册式、序列化。

1.2.1 饿汉式

在实例使用之前,不管你用不用,我都先new出来再说,避免了线程安全的问题

1.2.2 懒汉式

默认加载的时候不实例化,在需要使用的时候实例化(Spring中叫做:延时加载)

特点:在外部类被调用的时候内部类才会被加载,内部类一定是要在方法调用之前初始化,巧妙地避免了线程安全问题,这种形式兼顾饿汉式的内存浪费,也兼顾synchronized性能问题

1.2.3 注册式

每使用一次,都往一个固定容器中去注册并且将使用过的对象进行缓存,下次去取对象的时候就直接从缓存中取出,以保证每次取出的对象一致。 IOC的单例模式就是注册登记式的单例模式。

1.2.3.1 利用枚举方式实现
1.2.3.2 利用Map方式实现

1.2.4 序列化与反序列化

必须重写以下方法

private  Object readResolve(){
    return  INSTANCE;
}
Clone this wiki locally