【问题标题】:Establishig happens-before relationship in Java在Java中建立happens-before关系
【发布时间】:2015-11-24 09:01:01
【问题描述】:

我知道,在java中建立happens-before关系有两种方法:同步块和方法,volatile关键字。 (如果我是正确的,它不适用于最终字段)。 我的问题是:并发包中的原子变量的行为是否相似?可以由他们建立之前发生的事情吗?

【问题讨论】:

    标签: java multithreading concurrency java.util.concurrent happens-before


    【解决方案1】:

    是的,它们是线程安全的,因此您可以确定发生/之前和之后的关系。

    AtomicXxxx 类操作使用 volatile、CAS、原子添加或惰性/无序集。都有一些线程安全保证,但比同步更轻量级。

    【讨论】:

    • 更具体地说,java.util.atomic 包的 Javadoc 承诺所有 AtomicXxxxxxxx 对象都像 volatile 具有额外功能的变量一样工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    • 2011-05-25
    • 2014-02-04
    • 2018-04-13
    • 1970-01-01
    相关资源
    最近更新 更多