1、引言
单例模式是开发中用的最多的模式,随处可见。此处就不在多讲。单例模式有饿汉式,懒汉式。懒汉式后来又衍生出双重校验锁。实现单例模式需要三步:
1)、构造方法私有,保证无法从外部通过 new 的方式创建对象。
2)、对外提供获取该类实例的静态方法
3)、类的内部创建该类的对象,通过第 2 步的静态方法返回
2、正式学习
有些情况下必须使用单例模式,如果不使就会产生如下情况:
2.1、饿汉式
2.2、懒汉式
懒汉式线程不安全,当同时一个线程进来还没有执行tools = new Tools()时,另一个线程也进来,则会实例化两个对象,导致线程不安全。可以加上synchroized,缺点就是效率有些低。
双重校验锁不仅解决了效率问题,同时还保证了线程安全