volatile从字面上是理解是易变的、不稳定的。在Java中,它也扮演者类似的角色:告诉编译器,凡是被该关键字声明的变量都是易变的、不稳定的。 因此,试图对该变量使用缓冲等优化机制就毫无意义;应当每次都从内存空间中去读取值。但由于volatile只提供了内存可见性,而没有提供原子性(每次修改完volatile变量后并不一定立即写回内存),所以,若用此关键字做高并发的安全机制是不可靠的。 |
volatile从字面上是理解是易变的、不稳定的。在Java中,它也扮演者类似的角色:告诉编译器,凡是被该关键字声明的变量都是易变的、不稳定的。 因此,试图对该变量使用缓冲等优化机制就毫无意义;应当每次都从内存空间中去读取值。但由于volatile只提供了内存可见性,而没有提供原子性(每次修改完volatile变量后并不一定立即写回内存),所以,若用此关键字做高并发的安全机制是不可靠的。 |