synchronized包裹的内容为什么能初始化一半就被其他线程读到
来源:4-2 如何写出线程安全的程序?
she_says
2020-09-01
前面有两个人问过了,你的解释是Thread1中Singleton实例被分配了内存,但还未被初始化,这时候Thread2判断非null,直接获取未被初始化的实例。
那为什么会出现这种情况呢?synchronized内实例还没初始化就写了主内存,我怎么感觉这时还在副本,别的线程也读不到这种情况吧?那Thread1实例分配内存写一次主内存,被Thread2读到了,Thead1实例初始化完成再写一次主内存?
写回答
1回答
-
开辟内存就是在内存中划分空间,所以不存在同步块结束以前开辟内存就是在写副本的问题。022020-09-18
相似问题