java.util.concurrent.atmoic包定义了类,在单一变量上支持原子操作。所有的类有get和set方法,这些将在volatile变量上进行读写。即,在同一变量上set和后续的get有一个happens-before关系。原子compareAndSet 方法也有这些内存持续性功能,就像在整形原子变量上做简单的运算方法。
为了看这个包如何使用的,让我们返回原先演示线程接口的Counter方法。
class Counter {
private int c = 0;
public void increment() {
c++;
}
public void decrement() {
c--;
}
public int value() {
return c;
}
}
一种使Counter安全防范线程争用,是使它的方法同步,就像SynchronizedCounter,
class SynchronizedCounter {
private int c = 0;
public synchronized void increment() {
c++;
}
public synchronized void decrement() {
c--;
}
public synchronized int value() {
return c;
}
}
对于这个简单类,同步是一个可选方案。但是对于一个复杂的类,我们可能想避免不必要的同步带来的活性缺失。作为使用AtomicInteger声明字段允许我们防范线程争用而不依赖同步的替代,如 AtomicCounter:
import java.util.concurrent.atomic.AtomicInteger;
class AtomicCounter {
private AtomicInteger c = new AtomicInteger(0);
public void increment() {
c.incrementAndGet();
}
public void decrement() {
c.decrementAndGet();
}
public int value() {
return c.get();
}
}
分享到:
相关推荐
主要介绍了Java多线程Atomic包操作原子变量与原子类详解,简单介绍了Atomic,同时涉及java.util.concurrent中的原子变量,Atomic类的作用等相关内容,具有一定参考价值,需要的朋友可以了解下。
该库提供的主要数据类型是Atomic[A] ,它表示值为A原子变量。 人们使用newAtomic方法创建了这样的变量: val myAtomicVar : Atomic [ Int ] = newAtomic( 0 ) Atomic对象始终具有一个值。 因此,在创建时,必须...
atomic_ops原子操作1
原子范数约束谱估计文章,是稀疏恢复领域比较好的文章
主要研究四种变量(属性)的存取速度. volatile nonatomic atomic和正常变量
3、并发编程之CAS&Atomic原子操作详解
原子变量类相当于一种泛化的 volatile 变量,能够支持原子的和有条件的读-改-写操作。AtomicInteger 表示一个int类型的值,并提供了 get 和 set 方法,这些 Volatile 类型的int变量在读取和写入上有着相同的内存语义...
原子 原子项目简介 Atomic 项目提供了一个平台,允许在不同类型的服务器(物理机、虚拟机、云……)上安装和管理容器。 主机旨在尽可能高效地提供容器服务,因此是非常简单的主机,只有必要的软件。 这些主机是从 ...
详细地介绍了C++11中的原子操作,值得好好研读。
atomic
kotlinx.atomicfu:在Kotlin中使用原子操作的惯用方式
旨在提供类似于Java中的java.util.concurrent.atomic中的原子数组类型。 提供以下类型: AtomicOptionRefArray –对应于 。 AtomicRefArray –具有强制默认值的AtomicOptionRefArray ,用于删除元素的可选属性。...
Atomic
前端开源库-atomic-batcher原子批处理程序,一个简单的批处理函数,允许您自动批处理一系列操作。
angular-atomic-notify, angular.js 应用程序的原子咆哮通知 angular-atomic-notify一个用于显示通知的AngularJS模块 依赖项我们使用这个库作为示例,注意jQuery用于 angular.element 和 Font Awesome 图标,但是你...
描述了linux系统原子操作的实现以及使用原子操作时的注意事项。
来自BOOST库的原子操作atomic的源代码,跨平台
Atom-atomic-rtags.zip,原子的rtag原子标记,atom是一个用web技术构建的开源文本编辑器。
Chronograph Atomic Time Clock 6.40(校时原子钟的时间工具)英文绿色特别版
Atom-atomic-bohr-model.zip,D3驱动的可定制动画原子玻尔模型原子玻尔模型,atom是一个用web技术构建的开源文本编辑器。