关注
个人理解,你的回答是对的。先跑A线程,因为new 对象的过程不是原子的,那就可能分配了内存但没有初始化,此时跑B线程,check时因为对象分配了内存不会为null,直接返回了一个没有初始化完成的对象,然后A线程再初始完对象……所以根源在于 new 操作非原子,存在被指令重排的可能性,对象虽然只会被 new 一次而且可以成功初始化,但在 new 的过程中,其他线程可能会拿到未被初始化完成的对象。
查看原帖
2 评论
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 牛客新年AI问运 #
6388次浏览 110人参与
# 工作中的卑微时刻 #
33409次浏览 199人参与
# 牛客AI体验站 #
16229次浏览 286人参与
# 多益网络工作体验 #
63140次浏览 306人参与
# 有必要和同事成为好朋友吗? #
991次浏览 21人参与
# 正在实习的碎碎念 #
1644867次浏览 13716人参与
# 面试中的破防瞬间 #
1190174次浏览 11027人参与
# 工作一周年分享 #
52322次浏览 274人参与
# 滴!实习打卡 #
786501次浏览 6841人参与
# 秋招吐槽大会 #
304259次浏览 1523人参与
# 机械人的薪资开到多少,才适合去? #
165021次浏览 571人参与
# 你最满意的offer薪资是哪家公司? #
71380次浏览 353人参与
# 大学最后一个寒假,我想…… #
89268次浏览 809人参与
# 你怎么看待AI面试 #
145993次浏览 786人参与
# 哪些公司真双非友好? #
62883次浏览 268人参与
# OC/开奖 #
411254次浏览 2282人参与
# 为了实习逃课值吗? #
65761次浏览 526人参与
# 如果可以选,你最想从事什么工作 #
721940次浏览 4870人参与
# 重来一次,你会对开始求职的自己说 #
32809次浏览 388人参与
# 如何提高实习转正率? #
86520次浏览 505人参与