//volatile 保证线程变量的透明
public class Volatil {
volatile int x =0; //线程共有内存变量,可获取最后一次写的值
private int y = 0;
private void write() {
x = 5;
y = 1;
}
private void read() {
int dummy = y;
while (x != 5) {
System.out.println("..." + y + " dummy=" + dummy); //dummy与y的值不相等
}
}
public static void main(String[] args) throws Exception {
final Volatil v = new Volatil();
Thread t1 = new Thread(
new Runnable() {
public void run() {
v.write();
}
}
);
Thread t2 = new Thread(
new Runnable() {
public void run() {
v.read();
}
}
);
t2.start();
t1.start();
t1.join();
t2.join();
System.out.println("x="+v.x + " y="+v.y);
System.out.println("***** over ***");
}
}