syn关键字是从虚拟机指令的层面来锁定一段代码,同一时间只有一个线程操作,会引起线程挂起volatile关键字不会引起线程的挂起,每次都是刷新工作内存和主内存中的数据,这样就保证了多线程之间的可见性在满足使用场景的情况下优先使用volatile来修饰变量,因为volatile属于轻量级锁,可以减少线程切换的开销