【发布时间】:2015-11-24 09:01:01
【问题描述】:
我知道,在java中建立happens-before关系有两种方法:同步块和方法,volatile关键字。 (如果我是正确的,它不适用于最终字段)。 我的问题是:并发包中的原子变量的行为是否相似?可以由他们建立之前发生的事情吗?
【问题讨论】:
标签: java multithreading concurrency java.util.concurrent happens-before
我知道,在java中建立happens-before关系有两种方法:同步块和方法,volatile关键字。 (如果我是正确的,它不适用于最终字段)。 我的问题是:并发包中的原子变量的行为是否相似?可以由他们建立之前发生的事情吗?
【问题讨论】:
标签: java multithreading concurrency java.util.concurrent happens-before
是的,它们是线程安全的,因此您可以确定发生/之前和之后的关系。
AtomicXxxx 类操作使用 volatile、CAS、原子添加或惰性/无序集。都有一些线程安全保证,但比同步更轻量级。
【讨论】:
volatile 具有额外功能的变量一样工作。