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

相关推荐

牛客网
牛客企业服务