Java中怎么实现原子操作类

发布时间:2021-07-15 11:07:56 作者:Leah
来源:亿速云 阅读:196

这篇文章将为大家详细讲解有关Java中怎么实现原子操作类,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

 

一、引言

在 JDK1.5 中新增 java.util.concurrent(J.U.C) 包,它建立在 CAS 之上。CAS 是非阻塞算法的一种常见实现,相对于 synchronized 这种阻塞算法,它的性能更好。

DK1.5 中引入了底层的支持,在 int、long 和对象的引用等类型上都公开了 CAS 的操作,并且 JVM 把它们编译为底层硬件提供的最有效的方法,在运行 CAS 的平台上,运行时把它们编译为相应的机器指令。在 java.util.concurrent.atomic 包下面的所有的原子变量类型中,比如 AtomicInteger,都使用了这些底层的JVM支持为数字类型的引用类型提供一种高效的 CAS 操作。


二、Java原子类介绍

atomic 包中的 13 个类,属于 4 种类型的原子更新方式.

atomic 包里的类基本都是使用 Unsafe 实现的包装类.

 

1.原子更新基本类型

本类以 AtomicInteger 进行讲解:

AtomicInteger 是一个支持原子操作的 Integer 类,就是保证对 AtomicInteger 类型变量的增加和减少操作是原子性的,不会出现多个线程下的数据不一致问题。如果不使用 AtomicInteger,要实现一个按顺序获取的 ID,就必须在每次获取时进行加锁操作,以避免出现并发时获取到同样的 ID 的现象。

那么getAndIncrement 是如何实现原子操作的呢?

1public final int getAndIncrement() { 
2    for (;;) { 
3        int current = get(); 
4        int next = current + 1; 
5        if (compareAndSet(current, next)) 
6            return current; 
7    } 
8}

关于Java中怎么实现原子操作类就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. java 多线程-CAS原子操作
  2. java中CAS原子操作的示例分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:DropDownList和ObjectDataSource的配合使用方法

下一篇:PHP 中魔术常量有什么用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》