问答详情
源自:4-4 volatile不能保证原子性(下)

volatile原子性

volatile既然不能保证原子性,那么volatile是不是没有什么用了?没有什么应用场景了?

提问者:weibo_新青年_64131_03734533 2016-07-28 09:29

个回答

  • 慕斯0128424
    2017-10-10 00:45:48

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

  • Wongsir
    2016-07-28 13:16:22

    这个就要涉及到volatile和synchronized两者的比较了。在实际使用中,synchronized比volatile使用更加广泛,但是由于volatile比synchronized更加轻量级,不需要加锁,因此不会阻塞线程。所以在能保证共享变量的原子性的情况下使用volatile的效率会更高。