众所周知多线程安全的三大特性:可见性、有序性、原子性。java关键字 volatile修饰变量具多线程间的可见性,有序性;然而,当多线程并发去共享某一资源进行修改时,就会有原子性问题,因为volatile并不能确保原子性,所以java就为此提供了一些具有原子性的原子类。
synchronized则可以同步代码,具有原子性特点
所以也可以等于 volatile + synchronized就可以保证和原子类一样的效果。
众所周知多线程安全的三大特性:可见性、有序性、原子性。java关键字 volatile修饰变量具多线程间的可见性,有序性;然而,当多线程并发去共享某一资源进行修改时,就会有原子性问题,因为volatile并不能确保原子性,所以java就为此提供了一些具有原子性的原子类。
synchronized则可以同步代码,具有原子性特点
所以也可以等于 volatile + synchronized就可以保证和原子类一样的效果。