volatile(保证其他线程改了立马能看到,但不保证并发安全操作原子性。)

public class VolatileExample {
    private volatile boolean initialized = false;
    private final Object lock = new Object();

    // 初始化资源的方法
    public void initialize() {
        synchronized (lock) {
            // 模拟资源初始化的过程
            // ...
            initialized = true; // 标记资源已初始化
        }
    }

    // 检查资源是否已初始化的方法
    public boolean isInitialized() {
        return initialized; // 直接读取volatile变量,确保可见性
    }

    public static void main(String[] args) {
        VolatileExample example = new VolatileExample();

        // 在另一个线程中初始化资源
        new Thread(() -> {
            example.initialize();
            System.out.println("Resource initialized!");
        }).start();

        // 在主线程中检查资源是否已初始化
        while (!example.isInitialized()) {
            // 等待资源初始化完成
            // 由于使用了volatile修饰initialized变量,因此可以确保这里的循环能够及时检测到变量的变化
        }

        System.out.println("Resource is now initialized and can be used!");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值