步骤如下:
定义一个全局整型变量a,初始值为0,先在子线程T访问这个变量,如果这个变量的值等于0,就无限循环,否则就打印日志,结束线程。
然后在主线程修改这个变量的值为1,会发现不论等多久子线程不会打印最终的日志,一直在无限循环。
class Test {
// volatile
static int a = 0;
static Runnable r1 = new Runnable() {
@Override
public void run() {
while (a == 0) {
}
System.out.println("Thread r1 terminated.");
}
};
public static void main(String[] args) throws InterruptedException {
Thread t = new Thread(r1);
t.start();
Thread.sleep(1000);
a = 1 ;
Thread.sleep(2000);
System.out.println("a = " + a);
}
}