`
pumbaa.he
  • 浏览: 71393 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

AtomicInteger—线程安全的ID自增对象

    博客分类:
  • java
 
阅读更多

AtomicInteger,可以用做线程安全的ID自增对象,具体的资料网上搜索一下很多,这边就不列举了,下面是一个例子

 

public static ConcurrentHashMap<String, AtomicInteger> ID = new ConcurrentHashMap<String, AtomicInteger>();

 

ID.put("Character", new AtomicInteger(1000001));

ID.put("Monster", new AtomicInteger(1000010));

 

int intNextCrtID = ID.get("Character").getAndIncrement();
  int intNextMstID = ID.get("Monster").getAndIncrement();
  
  System.out.println("intNextCrtID : " + intNextCrtID);//1000001
  System.out.println("intNextMstID : " + intNextMstID);//1000010
  
  intNextCrtID = ID.get("Character").getAndIncrement();
  intNextMstID = ID.get("Monster").getAndIncrement();
  
  System.out.println("intNextCrtID : " + intNextCrtID);//1000002
  System.out.println("intNextMstID : " + intNextMstID);//1000011

 

备注:AtomicInteger 的最大值是2147483647,超过这个数字在递增的话就变成-2147483648

分享到:
评论

相关推荐

    java多线程自增效率比较及原理解析

    在多线程环境下,对于自增操作需要考虑线程安全问题,常见的解决方法包括使用synchronized关键字、AtomicInteger、LongAdder和LongAccumulator等。本文给出了使用这些方法实现自增的代码演示,并通过多线程测试比较...

    java多线程安全性基础介绍.pptx

    类似于一个以线程id为key的map 不可变对象状态 final 关键共享资源上互斥,变并发为串行即同步 锁 分类 显示锁 Lock Lock是个接口 实现类 ReentrantLock 可重入锁 ReentrantReadWriteLock.ReadLock ...

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

    主要介绍了Java中对AtomicInteger和int值在多线程下递增操作的测试,本文得出AtomicInteger操作 与 int操作的效率大致相差在50-80倍上下的结论,需要的朋友可以参考下

    Java并发编程相关源码集 包括多任务线程,线程池等.rar

     volatile关键字的非原子性、volatile关键字的使用、AtomicInteger原子性操作、线程安全小例子:多个线程竞争问题、多个线程多个锁问题、创建一个缓存的线程池、多线程使用Vector或者HashTable的示例(简单线程同步...

    JUC多线程学习个人笔记

    原子操作:JUC提供了一些原子操作类,如AtomicInteger、AtomicLong等,可以实现线程安全的原子操作,避免了使用synchronized关键字的性能损耗。 锁机制:JUC提供了Lock接口和Condition接口,可以实现更细粒度的锁...

    使用Java的Memory Model实现一个简单的计数器.txt

    `AtomicInteger`是一个支持原子操作的整数类,它内部使用了CAS(Compare And Swap)算法来实现线程安全的操作。在这个计数器中,我们使用`AtomicInteger`的`incrementAndGet()`方法来实现自增操作,并使用`get()`...

    Java多线程大量调用百度地图的搜索功能,来做课程作业数据准备

    主要共享的就是一个sheet对象和访问列标row_number,由于对数据表只是读操作,写操作在单独对一列,所以觉得应该没有脏读对问题,所以对于sheet对象没有使用对象锁, 对于row_number因为我在代码里多次用到,包括...

    AtomicInteger并发测试

    测试java.util.concurrent.atomic.AtomicInteger的类 与直接使用int做区别

    java线程学习笔记

    2.2.2 原子类(AtomicInteger,AtomicLong,AtomicReference) 13 2.3 线程本地存储(Java.lang.ThreadLocal) 15 2.4 线程阻塞 17 2.4.1 调用sleep(millisecond)使任务进入休眠状态 17 2.4.2 等待输出与输入 17 2.4.3...

    Redis数据结构与对象总结

    Redis数据结构与对象总结 数据结构与对象 简单动态字符串 SDS简介 SDS与C字符串的区别 常数复杂度获取字符串长度 O(n) O(1) 杜绝缓冲区溢出 修改字符串长度时内存重分配 空间预分配:对字符串进行增长操作时...

    线程基础,线程池,生命周期

    线程基础,线程池,生命周期

    AtomicInteger 浅谈

    NULL 博文链接:https://zcmor.iteye.com/blog/1535524

    ViewPager+AtomicInteger实现广告轮播

    利用ViewPager实现的广告轮播,没有触摸事件的时候可以定时轮播广告,有触摸事件实施触摸事件。自动轮播使用的是线程加AtomicInteger的方式实现。

    e语言-易语言线程安全之原子锁与读写锁

    局部变量 ai, AtomicInteger .局部变量 rwLock, ReadWriteLock ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ...

    java并发之AtomicInteger源码分析

    AtomicInteger是java并发包下面提供的原子类,主要操作的是int类型的整型,通过调用底层Unsafe的CAS等方法实现原子操作。下面小编和大家一起学习一下

    AtomicInteger的使用,CAS的工作原理

    AtomicInteger atomicInteger = new AtomicInteger(5); atomicInteger.compareAndSet(5, 2020) + \t current data is + atomicInteger.get()) /** * Atomically sets the value to the given updated value * if ...

    Java AtomicInteger类的使用方法详解

    主要介绍了Java AtomicInteger类的使用方法详解,文中有具体实例代码,具有一定参考价值,需要的朋友可以了解下。

    Java AtomicInteger类使用方法实例讲解

    主要介绍了Java AtomicInteger类使用方法实例讲解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    AtomicIntegerExample:AtomicInteger示例

    AtomicInteger示例AtomicInteger用于原子增量计数器之类的应用程序。 简短的示例代码: public class AtomicIntegerExample { private final ExecutorService execService = Executors . newFixedThreadPool( 100 );...

    java编发编程:JUC综合讲解

    JUC 提供了线程安全的并发集合类,如 ConcurrentHashMap、ConcurrentLinkedQueue 等。 3. 原子操作(Atomic Operations): 原子操作是不可再分割的基本操作,JUC 提供了一系列原子操作类,如 AtomicInteger、...

Global site tag (gtag.js) - Google Analytics