首页 > 其他分享 >AtomicInteger

AtomicInteger

时间:2024-08-06 17:38:33浏览次数:6  
标签:int AtomicInteger next current static import


import lombok.SneakyThrows;

import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;

public class AtomicIntegerTest {

    private static final AtomicInteger atomicInteger = new AtomicInteger(0);

    @SneakyThrows
    public static final int getAndIncrement() {
        int current;
        int next = 0;
        do {
            current = atomicInteger.get();
            TimeUnit.SECONDS.sleep(2);
            // 防止越界
            next = current >= Integer.MAX_VALUE ? 0 : current + 1;
        } while (!atomicInteger.compareAndSet(current, next));
        System.out.println("next=" + next);
        return next;
    }

    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            new Thread(AtomicIntegerTest::getAndIncrement).start();
        }
    }
}

标签:int,AtomicInteger,next,current,static,import
From: https://www.cnblogs.com/goodluckxiaotuanzi/p/18345708

相关文章

  • Java----CAS算法与AtomicInteger源码解读
    CAS介绍:为了确保对数据操作的原子性,在java.util.concurrent.atomic下定义许多关于各种基本类型数据的提供原子操作的类。这里我们以AtomicInteger为例子。AtomicInteger的本质:自旋锁+CAS算法CAS的全称是:CompareAndSwap(比较再交换);是现代CPU广泛支持的一种对内存中的......
  • 美团一面:什么是CAS?有什么优缺点?我说我只用过AtomicInteger。。。。
    引言传统的并发控制手段,如使用synchronized关键字或者ReentrantLock等互斥锁机制,虽然能够有效防止资源的竞争冲突,但也可能带来额外的性能开销,如上下文切换、锁竞争导致的线程阻塞等。而此时就出现了一种乐观锁的策略,以其非阻塞、轻量级的特点,在某些场合下能更好地提升并发性能,其......
  • 并发编程之AtomicInteger,AtomicLong,LongAdder
    系列文章目录文章目录系列文章目录前言前言前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。AtomicInteger类是系统底层保护的int类型,通过提供执行方法的控制进行......
  • 面试题:AtomicInteger底层是如何实现的?
    有过Java面试经验的同学,可能很多都被问过这样一个问题:说一说AtomicInteger底层是如何实现的。废话不多说,源码先贴出来:publicfinalintgetAndAddInt(Objectvar1,longvar2,intvar4){intvar5;do{var5=this.getIntVolatile(var1,var2);}whil......
  • Java8 原子类 AtomicInteger 源码阅读
    AtomicInteger 是用 CAS(Compre And Swap,乐观锁)构造的一个 原子类。1. CAS CAS(CompareandSwap)比较并替换,CAS是实现乐观锁的一个重要操作。CAS是一个硬件指令,保证是原子操作,Java中通过UnSafe来实现。详细可一下我的这篇博文:传送。CAS 的基本步骤:执行函数CAS(V,E,N......
  • AtomicInteger源码解读和Unsafe对象
    针对线程安全问题,jdk除提供了加锁的解决方式外还提供了无锁的方式,例如AtomicInteger这个原子整数类,无锁并发的线程安全是通过cas来实现的,这一篇文章就来简单分析下AtomicInteger的源码实现。一、AtomicInteger的简答使用先来看一断非线程安全的代码@Slf4jpublicclassThre......
  • AtomicInteger类代码内部逻辑
    AtomicInteger是什么一个可以原子更新的int值。有关原子变量属性的描述,请参阅java.util.concurrent.atomic包规范。AtomicInteger用于原子递增计数器等应用程序,不能用作Integer的替代品。但是,这个类确实扩展了Number,以允许处理基于数字的类的工具和实用程序进行统一访问。设......
  • AtomicInteger详解
    AtomicInteger定义AtomicInteger类是系统底层保护的int类型,通过对int类型的数据进行封装,提供执行方法的控制进行值的原子操作,但AtomicInteger≠Integer。AtomicInteger是一个提供原子操作的Integer类,通过线程安全的方式操作加减。AtomicInteger使用场景AtomicInteger提供原子操作......
  • 20230614 java.util.concurrent.atomic.AtomicInteger
    介绍java.util.concurrent.atomic.AtomicIntegerpublicclassAtomicIntegerextendsNumberimplementsjava.io.SerializableAPI构造器AtomicInteger()AtomicInteger(intinitialValue)设置初始值,默认是0public方法get,set原子操作不同步内存屏障,不能......
  • AtomicInteger
    众所周知,AtomicInteger用于多线程下线程安全的数据读写操作,避免使用锁同步,底层采用CAS实现,内部的存储值使用volatile修饰,因此多线程之间是修改可见的。1.构造publicAutomicInteger(intinitValue):有参构造,初始化为initValuepublicAutomicInteger():无参构造,相当于Automic......