Oracle官方并发教程之原子变量

简介:

原文地址译文地址 ,译者:李任,校对:郑旭东

java.util.concurrent.atomic包定义了对单一变量进行原子操作的类。所有的类都提供了get和set方法,可以使用它们像读写volatile变量一样读写原子类。就是说,同一变量上的一个set操作对于任意后续的get操作存在happens-before关系。原子的compareAndSet方法也有内存一致性特点,就像应用到整型原子变量中的简单原子算法。

为了看看这个包如何使用,让我们返回到最初用于演示线程干扰的Counter类:

01 class Counter {
02     private int c = 0;
03     public void increment() {
04         c++;
05     }
06  
07     public void decrement() {
08         c--;
09     }
10  
11     public int value() {
12         return c;
13     }
14 }

使用同步是一种使Counter类变得线程安全的方法,如SynchronizedCounter

01 class SynchronizedCounter {
02     private int c = 0;
03     public synchronized void increment() {
04         c++;
05     }
06     public synchronized void decrement() {
07         c--;
08     }
09     public synchronized int value() {
10         return c;
11     }
12 }

对于这个简单的类,同步是一种可接受的解决方案。但是对于更复杂的类,我们可能想要避免不必要同步所带来的活跃度影响。将int替换为AtomicInteger允许我们在不进行同步的情况下阻止线程干扰,如AtomicCounter

01 import java.util.concurrent.atomic.AtomicInteger;
02 class AtomicCounter {
03     private AtomicInteger c = new AtomicInteger(0);
04     public void increment() {
05         c.incrementAndGet();
06     }
07  
08     public void decrement() {
09         c.decrementAndGet();
10     }
11  
12     public int value() {
13         return c.get();
14     }
文章转自  并发编程网-ifeve.com
目录
相关文章
|
1月前
|
Oracle 关系型数据库 网络安全
Oracle 19c 安装教程学习
Oracle 19c 安装教程学习
61 2
|
3月前
|
Oracle 网络协议 安全
Oracle 11g DataGuard搭建保姆级教程
Oracle 11g DataGuard搭建保姆级教程
216 4
|
3月前
|
SQL Oracle 关系型数据库
Oracle 11g 打PSU补丁教程
Oracle 11g 打PSU补丁教程
114 2
|
4月前
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
310 3
|
4月前
|
Oracle 关系型数据库 Java
Oracle数据库教程
Oracle数据库教程
|
4月前
|
SQL Oracle 关系型数据库
Oracle数据库基础教程:从安装到基本操作的全面介绍
Oracle数据库基础教程:从安装到基本操作的全面介绍
|
4月前
|
SQL 存储 Oracle
Oracle数据库基础教程与操作技巧
Oracle数据库基础教程与操作技巧
|
Oracle 关系型数据库 Shell
|
存储 Oracle 安全
Oracle 11g服务器安装详细步骤——图文教程
Oracle 11g服务器安装详细步骤——图文教程
435 0
Oracle 11g服务器安装详细步骤——图文教程