5-3 安全发布对象-四种方法-2 中, 都已经锁掉了class了,即使重排序了,但是还没实例化完成之前,线程A应该不会释放这个锁啊,那其他线程应该进不来啊?
来源:4-3 安全发布对象-四种方法-2

慕聖9527
2018-03-26
5-3 安全发布对象-四种方法-2 中, 都已经锁掉了class了,即使重排序了,但是还没实例化完成之前,线程A应该不会释放这个锁啊,那其他线程应该进不来啊?
写回答
1回答
-
你好,尽管线程A没有释放这个锁,但是线程B依然可以执行不包含锁的代码,如果发生了指令重排序导致线程A还没实际初始化完成,线程B执行时发现这里的实例已经不为空了,就会直接返回这个未实际处理完成的实例,而不会进入锁等待的代码里。导致返回的实例有问题。
112018-03-26
相似问题