目标:
1.了解什么是变量可见性问题
2.造成变量可见性问题原因
3.volatile关键字
前提说明:变量可见性问题发生在多线程,只有多线程才有变量可见性问题
1.什么是变量可见性问题
问题1:如何在多线程之间共享变量?使用全局变量:静态变量或者共享对象
问题2:一个变量在线程1中被改变值了,在线程2中能看到此变量的最新值吗?不一定
有如下代码,执行结果是什么呢?线程会停止循环打印出i的值吗?
import java.util.concurrent.TimeUnit;
public class TestVolatile {
private static boolean isRunning = true;
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
int i=0;
while (isRunning){
i++;
}
System.out.println(i);
}
}).start();
try {
TimeUnit.SECONDS.sleep(2); /