volatile关键字保证可见性实践

volatile关键字保证可见性实践

什么叫可见性?

每个线程都会将用到的变量从主内存读取到自己独占的工作内存中使用。当两个线程使用了同一个变量,其中一个线程A对该变量进行了修改,并同步到主内存后。不能保证另一个线程B马上读取到该变量的最新值。也就是说线程A对变量的修改对线程B来说是不可见的。线程B继续使用旧值进行运算则会得到错误的结果。这就是可见性问题。

  • 代码实践
    volatile关键字保证可见性实践_第1张图片

如何避免可见性问题的发生?

使用volatile关键字修饰变量可以避免可见性问题的发生。因为使用volatile修饰的变量值发生改变的时候会强制刷新主内存中的变量值,并且强制使其他线程的工作内存中的该变量值直接失效。这样其他线程要使用该变量就只能重新从主内存中获取,这样就避免了可见性问题的发生。

  • 代码实践
    volatile关键字保证可见性实践_第2张图片

你可能感兴趣的:(java基础,java)