多线程中同一个变量会共享,但是有时候会发现不同线程中的共享变量,值不同步,原来每个线程都会有自己的内存存放变量的缓存值,而不是一起使用主内存中的变量值。
问题:主线程的while循环中,当flag
为true时,循环体为空的话,后面的打印语句不会执行,会一直在while里循环;而在循环体中加上一句语句,比如System.out.println(),循环就会正常结束,执行后面的输出语句。为什么当while循环体为空时不会退出循环,加入一句打印就会退出循环?
多线程中同一个变量会共享,但是有时候会发现不同线程中的共享变量,值不同步,原来每个线程都会有自己的内存存放变量的缓存值,而不是一起使用主内存中的变量值。
问题:主线程的while循环中,当flag
为true时,循环体为空的话,后面的打印语句不会执行,会一直在while里循环;而在循环体中加上一句语句,比如System.out.println(),循环就会正常结束,执行后面的输出语句。为什么当while循环体为空时不会退出循环,加入一句打印就会退出循环?