先看懒汉式单例模式
再看饿汉式单例模式
测试
输出结果
分析,总结:
1,两种形式instance和构造方法都用private;
2,instance和getInstance()都用static;
3,饿汉式instance用final;
4,懒汉式getInstance()用synchronized才能保证线程安全;
5,饿汉式的instance定义时就初始化instance = new Singleton(),线程是安全的,且不论后期是否用到都初始化了,所以牺牲了资源利用率,一旦用到又将提高速度;
6,懒汉式的instance是在使用时才初始化的,所以提高了资源利用率,但是用到时会浪费速度;
7,尽量用饿汉式单例模式,简单、好用、安全。