案例:使用volatile实现双重检查锁定
双重检查锁定(Double Check Locking)是一种使用同步控制并发访问的方式,可以实现延迟初始化。...但是在Java中,普通的双重检查锁定是不起作用的,原因是有指令重排的存在,可能导致另一个线程看到对象引用不是null,但是对象资源还没有完成初始化。...使用volatile关键字可以禁止指令重排,实现双重检查锁定。...V时才会设置新值,否则重新获取当前值。...CAS操作可以保证如果在多个线程同时使用一个变量时,只有一个线程可以更新变量的值,其他线程的设置值操作都会失败,这种机制可以实现原子操作。