· volatile不需要加锁,比synchronized更轻量级,不会阻塞线程,所以volatile执行效率更高;
· 从内存可见性角度看,volatile读相当于加锁,volatile写相当于解锁;
· synchronized既能保证可见性,又能保证原子性,而volatile只能保证可见性,无法保证原子性;
synchronized与volatile详细介绍:
Java多线程之内存可见性——synchronized
Java多线程之内存可见性——volatile
· volatile不需要加锁,比synchronized更轻量级,不会阻塞线程,所以volatile执行效率更高;
· 从内存可见性角度看,volatile读相当于加锁,volatile写相当于解锁;
· synchronized既能保证可见性,又能保证原子性,而volatile只能保证可见性,无法保证原子性;
synchronized与volatile详细介绍:
Java多线程之内存可见性——synchronized
Java多线程之内存可见性——volatile