volatile与synchronized区别:
volatile不会进行加锁操作。因此也不会使执行线程阻塞,因此volatile是一种比sunchronized关键字更加轻量级的同步机制。
volatile适用于一写多读的场景。只保存内存的可见性,不保证原子性(JMM模型+内存屏障,每一次读操作前,都会进行刷新,确保读取到的数据是主存中最新的值,read->load操作中无法保证安全,所以不保证原子性)。sycnhronized(加锁机制)保证了原子性和可见性。
ReentrantLock与synchronized区别?
可重入锁与synchronized锁区别?
synchronized改版后是可重入锁,修饰代码块和普通方法获取的是对象锁(即内置的monitor锁),修饰静态方法获取的是.class的类锁。