public class VolatileExample {
// 使用 volatile 关键字修饰变量 flag
private volatile boolean flag = true;
public static void main(String[] args) throws InterruptedException {
VolatileExample example = new VolatileExample();
// 启动一个线程不断检查 flag 的值
Thread t1 = new Thread(() -> {
while (example.flag) {
// 线程会一直运行,直到 flag 被设置为 false
}
System.out.println("Thread 1 stopped.");
});
t1.start();
// 主线程休眠 2 秒后将 flag 设置为 false
Thread.sleep(2000);
example.flag = false;
System.out.println("Main thread set flag to false.");
}
}
volatile 关键字的作用:
volatile 关键字用于修饰变量,确保多个线程能够正确处理该变量的可见性。当一个线程修改了 volatile 变量的值,其他线程可以立即看到这个变化。示例代码说明:
flag 是一个 volatile 变量。线程 t1 不断检查 flag 的值,只要 flag 为 true,它就会继续运行。t1 后休眠 2 秒,然后将 flag 设置为 false。由于 flag 是 volatile 的,t1 立即可以看到这个变化,并停止运行。如果不使用 volatile:
volatile 关键字,可能会出现 t1 永远无法看到 flag 被设置为 false 的情况,因为它可能会一直读取本地缓存中的值,而不是主内存中的最新值。上一篇:java时间戳转换成年月日时分秒
下一篇:java获取请求的ip地址
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站