单例模式的几种实现方式

介绍

单例模式是为了保证某个类只有一个实例化对象,并自己提供一个访问对象的方式。实现单例模式有许多种不同的的方式。

不安全懒汉方式

懒汉创建单例模式

特点

为什么叫懒汉模式?因为在调用方法getInstance的时候才创建对象,所以很懒。这种方式明显线程不安全,只适合在单线程情况下使用,多线程情况下可能会创建多个对象。

加锁懒汉方式

加锁懒汉创建单例模式

特点

直接在getInstance方法上加synchronized同步锁,可以保证线程安全,但是粒度太大,效率比较低。

饿汉方式

饿汉创建单例模式

特点

为什么叫饿汉方式?因为在声明对象变量的时候就进行创建,巴不得早点创建,所以很饿。static变量instance在类加载的时候就初始化,没有锁,执行效率很高,也保证了线程安全。

双检查锁方式

双检查锁创建单例模式

特点

双重检查对象是否已经被创建,既保证了线程安全,又提高了效率。注意,这种方式给instance对象加了volatile关键字 ,保证对象内容对线程的可见性质。

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×