这么跟你解释:一行java代码被cpu执行的时候执行的是若干条cpu指令,synchronized对应到cpu执行若干条指令,但是volatile也对应若干条指令,相同的是他们对应的指令有一些相同的,即有重叠,但是又有差异,于是功能有相同也有差异。他们的使用场景也是如此。你现在不适合去理解深沉原理,先学会用,用对场景。