作者:haibiscuit
时间:2019:3:13
您的star是我不断前行的动力
https://github.com/haibiscuit
转载请说明出处
三:单例模式
定义:
保证类只有一个实例。
优势:
1.在Spring中默认的创建类型为单例
2.在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。
3.避免对资源的多重占用(比如写文件操作)
示例:
//示例一
// Effective Java 第一版推荐写法,主要是final可以缓存实例
class Singleton {
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
private Singleton (){}
public static final Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
//最好的写法
//这里主要好的原因是volatile,可以避免多线程带来的不安全(当然概率很低)
class Single4 {
private static volatile Single4 instance;
private Single4() {}
public static Single4 getInstance() {
if (instance == null) {
synchronized (Single4.class) {
if (instance == null) {
instance = new Single4();
}
}
}
return instance;
}
}
总结:
Spring默认的创建对象的姿势就是单例模式,但是使用单例模式需要着重考虑的是资源共享的线程安全问题。