Skip to content

首先看一段代码

java
public class JucTest {
    static boolean flag = true;
    public static void main(String[] args) throws InterruptedException {
        new Thread(()->{
            System.out.println(Thread.currentThread().getName()+" is running");
            while (flag);
            System.out.println(Thread.currentThread().getName()+" is end");
        }).start();
        Thread.sleep(1000);
        flag = false;
        Thread.sleep(5000);
        System.out.println(flag);
        System.out.println(Thread.currentThread().getName()+" is end");
    }
}

上述代码 创建了一个线程,在线程里进行死循环如果flag ==true

在主线程中,进行休眠1s后,将flag =false,再休眠5s

按照客观逻辑,理论上,子线程判断到flag 变为了false 后会停止,随即打印 结束语句

实践上运行结果为

shell
Thread-0 is running
false
main is end