volatile关键字的可见性

volatile关键字是一个多线程编程中非常重要的概念,它能够保证可见性,即当一个线程修改一个共享变量时,另一个线程可以立即看到这个修改。

1、什么是可见性

可见性指的是一个线程对另一个线程的修改是可见的,即一个线程修改的共享变量,另一个线程能够立即看到这个修改。

2、volatile关键字的作用

volatile关键字能够保证可见性,当一个线程修改一个共享变量时,另一个线程可以立即看到这个修改。它的作用是强制将修改的值立即写入主存,以便其他线程可以立即看到这个修改的值。

3、原理

volatile关键字的可见性原理是:当一个线程修改一个volatile变量时,JVM会把这个变量的修改立即写入主存,以便其他线程可以立即看到这个修改的值。

在volatile变量上的操作都是原子性的,即不会被线程调度程序中断,从而保证了可见性。另外,volatile变量也会禁止指令重排序优化,从而保证了有序性。

4、示例代码

public class VolatileTest {
    // 定义一个共享变量
    private volatile int count = 0;

    public void increase() {
        // 每次增加1
        count++;
    }

    public int getCount() {
        return count;
    }
}