Volatile关键字

Volatile

Volatile是Java虚拟机提供的轻量级的同步机制,主要特性有:
1.多线程之间保证可见性
2.不保证原子性
3.禁止指令重排

1.保证可见性

在JVM的内存模型中,每个线程都有一块单独的内存区域,并且会存储共享变量的副本到线程私有的内存区域中。这样的情况,使得在多线程的场景下,就会出现各线程中同一变量的值不一致的问题。但是在多线程环境中,被volatile修饰的变量在某个线程中被修改,在各个线程中可见。

2.不保证原子性

不可分割,一个线程在执行时,不能被打扰,也不能被分割,要么同时成功,要么同时失败。

3.禁止指令重排

.class文件会被jvm编译为一些二进制的指令被操作系统识别执行,但是实际执行过程中,线程的执行指令并不一定会按照指令的先后顺序执行,而是可能发生指令的乱序执行,这样在多线程访问时也会出现一些变量值不一致的问题。

你可能感兴趣的:(Volatile关键字)