使用Volatile关键字的案例分析
一、代码:
package com.zhl.thread.testVolatile;
import java.util.concurrent.TimeUnit;
public class TestVolatile {
volatile boolean b=true;
void m(){
System.out.println("start");
while(b){}
System.out.println("end");
}
public static void main(String[] args) {
final TestVolatile tv=new TestVolatile();
new Thread(new Runnable() {
@Override
public void run() {
tv.m();
}
}).start();
try {
//睡眠一秒 ---cpu可能中断
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
tv.b=false;
}
}
二、运行结果 | |
不用volatile 修饰变量 | 用volatile 修饰变量 |
三、解释分析: | |
|