多线程——7单列模式中的多线程问题

##单列模式中的多线程问题

1) 饿汉式

  • 代码:
    多线程——7单列模式中的多线程问题
  • 问题: 饿汉式主要问题在于不适用该单列其实列也被创建了,这样会浪费内存资源

2)懒汉式

  • 代码:
    多线程——7单列模式中的多线程问题
  • 问题:因为if判断这里引入了多线程问题,此时单列可能会出现多列

3)懒汉式–同步

  • 代码:
    多线程——7单列模式中的多线程问题
  • 问题: 虽然在方法上面加了同步代码块解决了线程安全问题,但这样在多线程情况下存在性能问题

4)双重检测机制

  • 代码:
    多线程——7单列模式中的多线程问题

  • 问题: 此处虽然解决了性能问题,但是这样的写法在指令重排序中会存在空指针异常

  • 解决:加入volatile关键字解决
    多线程——7单列模式中的多线程问题

5)优雅的饿汉式

多线程——7单列模式中的多线程问题

6)枚举方式实现

多线程——7单列模式中的多线程问题