1.volatile使用轻量级的,只能修饰变量;synchronized比较重量级,既可以修饰 可以修饰方法。
2.volatile 只能保证数据的可见性,不能用来同步,因为多个线程并发访问volatile修饰的变量不会阻塞。
synchronized不仅保证可见性,而且还保证原子性,因为,只有获得了锁的线程才能进入临界区,从而保证临界区中的所有语句都全部执行。多个线程争抢synchronized锁对象时,会出现阻塞。
3.线程安全性
线程安全性包括两个方面,①可见性。②原子性。
4. 总结
仅仅使用volatile并不能保证线程安全性。而synchronized则可实现线程的安全性。