有个问题先要探讨下:
在RocketMQ中都说DoubleCheck(无volatile版本)检查会出现空指针异常,原因是对象实例化顺序被打乱,导致未初始化的对象引用被其他线程引用后第一层判空直接通过后执行了单例相关对象的属性导致空指针,但是根据JMM规范的约定,在Synchronize解锁之前共享变量(单例的引用)不是不会刷新到主存被其他线程看到吗?
如果有同学知晓其中原理还望点拨一二。
在RocketMQ中解锁之前共享变量(单例的引用)不是不会刷新到主存被其他线程看到吗?[阿里云消息队列MQ]
「点点赞赏,手留余香」
还没有人赞赏,快来当第一个赞赏的人吧!