2017-12-28

2017-12-28  本文已影响0人  神秘人2

synchronized和volatile

volatile仅能使用在变量级别;synchronized则可以使用在变量、方法、和类级别的。

volatile保证了变量的可见性,synchronized保证了原子性和可见性。

volatile

原理:首先我们要先意识到有这样的现象,编译器为了加快程序运行的速度,对一些变量的写操作会先在寄存器或者是CPU缓存上进行,最后才写入内存。而在这个过程,变量的新值对其他线程是不可见的,而volatile的作用就是使它修饰的变量的读写操作都必须在内存中进行。volatile告诉JVM, 它所修饰的变量不保留拷贝,直接访问主内存中的。

上一篇下一篇

猜你喜欢

热点阅读