private volatile boolean flag = false; 给flag加上volatile关键字就不会死循环了。 我猜应该是因为没有额外的语句,所以线程1修改后的flag的值一直在CPU缓存中,没有更新到内存,然后主线程也没有从内存里读值。 或者是编译器自动优化?这个不太懂,感觉应该是内存中的flag值没有更新,看内存和CPU缓存这些也不会调试啊,求大神解答。
点赞 5

相关推荐

头像
11-06 10:58
已编辑
门头沟学院 嵌入式工程师
双非25想找富婆不想打工:哦,这该死的伦敦腔,我敢打赌,你简直是个天才,如果我有offer的话,我一定用offer狠狠的打在你的脸上
点赞 评论 收藏
分享
牛客网
牛客企业服务