多线程变量同步机制

在多线程环境下,共享变量可能存在线程间不同步的问题,由于线程有自己的内存缓存,可能不立即读取主内存中的最新值。当while循环体为空时,频繁访问可能导致主内存不会及时刷新工作内存,加入如System.out.println()的语句,通过调整调度使得主内存有机会更新工作内存,从而解决不同步问题。volatile关键字可确保变量的可见性和有序性,强制从主内存读取,但会牺牲效率。
摘要由CSDN通过智能技术生成
多线程中同一个变量会共享,但是有时候会发现不同线程中的共享变量,值不同步,原来每个线程都会有自己的内存存放变量的缓存值,而不是一起使用主内存中的变量值。

问题:主线程的while循环中,当flag为true时,循环体为空的话,后面的打印语句不会执行,会一直在while里循环;
而在循环体中加上一句语句,比如System.out.println(),循环就会正常结束,执行后面的输出语句。
为什么当while循环体为空时不会退出循环,加入一句打印就会退出循环?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值