美文网首页
volatile 关键字

volatile 关键字

作者: qyfl | 来源:发表于2020-01-16 17:35 被阅读0次

    是什么?

    • volatile 是一种同步机制,比 synchronized 或者 Lock 相关类更轻量,因为 volatile 并不会发生上下文切换 等开销很大的行为。

    • 如果一个变量被修改成 volatile,那么JVM 就知道了这个变量可能会被并发修改

    • 开销小,相应的能力也小,虽然说 bolatile 是用来同步的保证线程安全的,但是 volatile 做不到 synchronized 那样的原子保护,volatile 仅在很有限的场景下才能发挥作用。

    作用

    保证可见性、禁止重排序

    适用于:如果一个共享变量被各个线程赋值,没有其他操作,那么就可以用 volatile 来替代 synchronized 或者替代原子变量,因为赋值本身是具有原子性的,而 volatile 有保证了可见性,所以就可以保证线程安全。也可以适用于刷新之前变量的触发器。
    例如:a = 3,这个操作除了赋值没有其他操作。

    不适用于:如果一个共享变量除了赋值以外有其他的对比、取值等操作,就不适用。
    例如:a++,这个操作需要先取值在赋值。

    相关文章

      网友评论

          本文标题:volatile 关键字

          本文链接:https://www.haomeiwen.com/subject/ylwfzctx.html