Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java volatile作用

作者:寡欢—   发布日期:2025-12-27   浏览:114

public class VolatileExample {

    // 使用 volatile 关键字修饰变量
    private volatile boolean flag = true;

    public void run() {
        // 线程1:修改 flag 的值
        new Thread(() -> {
            try {
                Thread.sleep(2000); // 模拟一些耗时操作
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            flag = false;
            System.out.println("Thread 1: Changed flag to " + flag);
        }).start();

        // 线程2:读取 flag 的值
        new Thread(() -> {
            while (flag) {
                // 这里会不断循环,直到 flag 被线程1修改为 false
            }
            System.out.println("Thread 2: Flag is now " + flag);
        }).start();
    }

    public static void main(String[] args) {
        new VolatileExample().run();
    }
}

解释说明:

  1. volatile 关键字的作用

    • volatile 关键字用于修饰变量,确保该变量的修改对所有线程立即可见。它防止了编译器或处理器对变量的访问进行重排序优化,从而保证了多线程环境下的内存可见性。
  2. 代码示例说明

    • 在这个例子中,flag 是一个用 volatile 修饰的布尔变量。
    • 线程1在启动后等待2秒,然后将 flag 修改为 false
    • 线程2在一个 while 循环中不断检查 flag 的值,直到 flag 被线程1修改为 false,此时线程2退出循环并打印结果。
    • 如果没有 volatile,线程2可能会由于缓存等原因一直读取到旧值,导致无法及时响应 flag 的变化。

上一篇:java treemap

下一篇:java stopwatch

大家都在看

java url decode

java判断是windows还是linux

java连接数据库的代码

java date类型比较大小

java djl

ubuntu 卸载java

es java api

java list 查找

java 解压rar

java读取excel中的图片

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站