volatile主要在属性上使用,synchronized主要在代码块或方法上使用 volatile无法描述线程同步的处理,他是一种直接内存的处理,避免了副本的操作,而synchronized是处理同步的。