public class VolatileTest {
//volatile
static boolean flag = false;
public static void main(String[] args) {
new Thread(){
@Override
public void run() {
System.out.println("第一个线程开始");
while (!flag){}
System.out.println("第一个线程结束");
}
}.start();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
new Thread(){
@Override
public void run() {
System.out.println("flag 已经 等于 true");
flag = true;
}
}.start();
}
}
此处flag在线程二中更改为true,第一个线程并不会察觉到。
但是加了volatile关键字保证一个内存的可见性,测试结果就和预想一样。
网友评论