volatile是一种轻量级的锁,同步的时候基于两个实现原则 1、将缓存行的数据写入到内存 2、使其他缓存行的数据失效 synchronized是一种重量级的锁,同步基于monitor,锁的是对象 1、所有的java对象都会关联一个互斥量 2、获得锁的时候不允许其他线程获取这个互斥量