`
ikecoolon
  • 浏览: 18439 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

AtomicLong 用法

阅读更多

 

AtomicLong 原子类,主要是结合HashMap来用,作为HashMap的有序索引,最常用的方法是getAndIncrement()和getAndDecrement() ,用来自动增长序列。

 

public AtomicLong(long initialValue) Hide
zh_cn
创建具有给定初始值的新 AtomicLong。
initialValue
zh_cn
初始值
public AtomicLong()
zh_cn
创建具有初始值 0 的新 AtomicLong。

 

Properties
final public long getAndAdd(long delta) Hide
zh_cn
以原子方式将给定值与当前值相加。
delta
zh_cn
要加上的值
return
zh_cn
以前的值
final public long getAndDecrement() Hide
zh_cn
以原子方式将当前值减 1。
return
zh_cn
以前的值
final public long getAndIncrement() Hide
zh_cn
以原子方式将当前值加 1。
return
zh_cn
以前的值
final public long getAndSet(long newValue) Details

 

Methods
final public long addAndGet(long delta) Hide
zh_cn
以原子方式将给定值与当前值相加。
delta
zh_cn
要加上的值
return
zh_cn
更新的值
final public boolean compareAndSet(long expect, long update) Hide
zh_cn
如果当前值 == 预期值,则以原子方式将该值设置为给定的更新值。
expect
zh_cn
预期值
update
zh_cn
新值
return
zh_cn
如果成功,则返回 true。返回 False 指示实际值与预期值不相等。
final public long decrementAndGet() Hide
zh_cn
以原子方式将当前值减 1。
return
zh_cn
更新的值
public double doubleValue()
public float floatValue()
final public long get() Hide
zh_cn
获取当前值。
return
zh_cn
当前值
final public long incrementAndGet() Hide
zh_cn
以原子方式将当前值加 1。
return
zh_cn
更新的值
public int intValue()
final public void lazySet(long newValue) Hide
zh_cn
最终设置为给定值。
newValue
zh_cn
新值
since 1.6
public long longValue()
final public void set(long newValue) Hide
zh_cn
设置为给定值。
newValue
zh_cn
新值
public String toString() Hide
zh_cn
返回当前值的字符串表示形式。
return
zh_cn
当前值的字符串表示形式。
final public boolean weakCompareAndSet(long expect, long update) Hide
zh_cn
如果当前值 == 预期值,则以原子方式将该值设置为给定的更新值。

可能意外失败并且不提供排序保证,因此几乎只是 compareAndSet 的适当替代方法。

expect
zh_cn
预期值
update
zh_cn
新值
return
zh_cn
如果成功,则返回 true。


在网上找了很多这玩意儿的用法,说是解决多线程模式下调用变量的问题,目前自己只用于制作的表格中生成序列。
分享到:
评论

相关推荐

    Java concurrency之AtomicLong原子类_动力节点Java学院整理

    AtomicLong的实现是基于Unsafe类的compareAndSwapInt()方法,该方法使用CAS(Compare And Swap)算法来实现原子操作。CAS算法的工作原理是:首先比较当前值是否等于预期值,如果相等,则将当前值设置为更新值,否则...

    Java concurrency之AtomicLongArray原子类_动力节点Java学院整理

    `AtomicLongArray`是Java并发库提供的一个原子性操作长整型数组的类,它支持线程安全的增加、减少、比较并设置、获取和设置等操作,而无需使用锁或其他同步机制。这使得在高并发场景下,多个线程可以并发地修改数组...

    java并发编程专题(十)----(JUC原子类)基本类型详解

    本资源主要介绍了Java JUC原子类基本类型的相关知识点,包括AtomicInteger、AtomicLong、AtomicBoolean等基本类型的使用方法和原理。通过对原子操作和 일반操作的比较,了解为什么需要使用原子类,如何使用...

    Java并发学习-AtomicIntegerFieldUpdater字段原子更新类.docx

    AtomicIntegerFieldUpdater 并不是一个线程安全的类本身,而是它提供的方法使得对指定字段的操作变得线程安全。 使用AtomicIntegerFieldUpdater需要注意以下几点规则: 1. **字段必须是volatile类型**:这是为了...

    long和double类型操作的非原子性探究(csdn)————程序.pdf

    例如,使用AtomicLong替换上面的代码: ```java import java.util.concurrent.atomic.AtomicLong; public class AtomicLongTest { private static AtomicLong test = new AtomicLong(0); public static void ...

    深入了解Java atomic原子类的使用方法和原理

    Java Atomic原子类的使用方法和原理 Java Atomic原子类是Java中的一种多线程安全机制,用于在多线程环境中保证变量的原子性操作。Atomic原子类的出现解决了多线程环境下变量操作的安全问题,使得开发者可以更方便地...

    redisson使用手册

    本使用手册将详细解析Redisson的使用方法和功能,帮助开发者充分利用Redisson进行高效的数据存储和管理。 一、Redisson简介 Redisson是一个完整的Redis Java客户端,它不仅提供了基本的键值操作,还支持高级特性如...

    如何通过C#实现单据号码的自动增加

    1. **字符串操作**:使用C#中的字符串方法来处理单据编号。 2. **数值计算**:计算单据编号中的数字部分并进行递增。 3. **字符数组**:利用字符数组对单据编号进行逐个字符的处理。 4. **循环结构**:通过循环来...

    java8的DoubleAccumulator使用.docx

    为了更好地理解 `DoubleAccumulator` 的使用方法,下面提供了一个简单的示例代码: ```java import java.util.concurrent.DoubleAccumulator; import java.util.function.DoubleBinaryOperator; public class ...

    java中ThreadLocalRandom的使用详解

    java中ThreadLocalRandom的使用详解中,主要介绍了ThreadLocalRandom的使用方法和原理,以及与Random类的比较。ThreadLocalRandom是JDK 7中引入的一个类,用于解决多线程环境中Random类的性能瓶颈问题。 首先,我们...

    java生成32位的唯一标识

    首先,最常用的方法是使用UUID(Universally Unique Identifier)类。UUID是一个128位的数字,通常以16进制表示,长度为32个字符。虽然UUID默认生成的是128位的标识,但可以通过特定方式将其转换为32位。在Java中,`...

    java利用oss实现下载功能

    该类中有一个私有构造函数,用于防止多线程并发bug,并使用AtomicLong来记录下载次数。writeJSONObjectFile方法用于将内容写入OSS,然后将下载链接返回给前端。 在writeJSONObjectFile方法中,我们首先创建OSS...

    Java中对AtomicInteger和int值在多线程下递增操作的测试

    测试中,作者创建了两个线程安全的场景:一个是使用`AtomicInteger`,另一个是使用普通的`int`变量。在每个场景中,都创建了100个线程,每个线程执行10000600次递增操作。通过`CountDownLatch`来协调线程的启动和...

    基于java的锁具装箱的源程序代码

    在这个基于Java的锁具装箱源程序中,我们可能会看到如何使用AtomicInteger、AtomicLong等类来实现并发控制。 首先,让我们了解什么是锁装箱。在早期的Java版本中,如JDK 1.4及以前,如果需要在多线程环境下对基本...

    分布式架构系统生成全局唯一序列号的一些思路对比分析.docx

    这样,每个服务器在内存中维护一个号段,通过AtomicLong类确保并发环境下的线程安全,每次请求序列号时,AtomicLong的incrementAndGet()方法能原子性地增加并返回新的序列号。 为了提高效率,携程还引入了号段的...

    kotlinx.atomicfu,在kotlin中使用原子操作的惯用方法.zip

    Kotlinx.AtomicFu是Kotlin社区的一个开源项目,它提供了在Kotlin中使用原子操作(Atomic Operations)的简便工具和库。这个项目主要是为了解决多线程环境下的并发问题,尤其是在非Java平台如JavaScript或者Native上...

    java synchronized关键字的用法

    - 避免过多使用静态 synchronized 方法,因为这可能导致大量线程竞争同一把锁,降低系统效率。 - 考虑使用 Lock 接口提供的更细粒度的锁控制,如 ReentrantLock,它可以提供尝试获取锁、可中断锁等待以及定时锁等待...

    Java多线程atomic包介绍及使用方法

    Java 多线程 atomic 包介绍及使用方法 Java 多线程 atomic 包是 Java 并发编程中的一种重要工具,自从 JDK 1.5 开始,Java 就提供了 java.util.concurrent.atomic 包,方便程序员在多线程环境下,无锁的进行原子...

    JDK8中新增的原子性操作类LongAdder详解

    在上面的例子中,我们创建了一个LongAdder对象,然后使用其increment()方法来递增计数器,最后使用sum()方法来获取当前的计数值。 LongAdder是JDK8中新增的原子性操作类,它解决了AtomicLong在高并发情况下的性能...

Global site tag (gtag.js) - Google Analytics