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
分享到:
相关推荐
在多线程环境下,对于自增操作需要考虑线程安全问题,常见的解决方法包括使用synchronized关键字、AtomicInteger、LongAdder和LongAccumulator等。本文给出了使用这些方法实现自增的代码演示,并通过多线程测试比较...
类似于一个以线程id为key的map 不可变对象状态 final 关键共享资源上互斥,变并发为串行即同步 锁 分类 显示锁 Lock Lock是个接口 实现类 ReentrantLock 可重入锁 ReentrantReadWriteLock.ReadLock ...
主要介绍了Java中对AtomicInteger和int值在多线程下递增操作的测试,本文得出AtomicInteger操作 与 int操作的效率大致相差在50-80倍上下的结论,需要的朋友可以参考下
volatile关键字的非原子性、volatile关键字的使用、AtomicInteger原子性操作、线程安全小例子:多个线程竞争问题、多个线程多个锁问题、创建一个缓存的线程池、多线程使用Vector或者HashTable的示例(简单线程同步...
原子操作:JUC提供了一些原子操作类,如AtomicInteger、AtomicLong等,可以实现线程安全的原子操作,避免了使用synchronized关键字的性能损耗。 锁机制:JUC提供了Lock接口和Condition接口,可以实现更细粒度的锁...
`AtomicInteger`是一个支持原子操作的整数类,它内部使用了CAS(Compare And Swap)算法来实现线程安全的操作。在这个计数器中,我们使用`AtomicInteger`的`incrementAndGet()`方法来实现自增操作,并使用`get()`...
主要共享的就是一个sheet对象和访问列标row_number,由于对数据表只是读操作,写操作在单独对一列,所以觉得应该没有脏读对问题,所以对于sheet对象没有使用对象锁, 对于row_number因为我在代码里多次用到,包括...
测试java.util.concurrent.atomic.AtomicInteger的类 与直接使用int做区别
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数据结构与对象总结 数据结构与对象 简单动态字符串 SDS简介 SDS与C字符串的区别 常数复杂度获取字符串长度 O(n) O(1) 杜绝缓冲区溢出 修改字符串长度时内存重分配 空间预分配:对字符串进行增长操作时...
线程基础,线程池,生命周期
NULL 博文链接:https://zcmor.iteye.com/blog/1535524
利用ViewPager实现的广告轮播,没有触摸事件的时候可以定时轮播广告,有触摸事件实施触摸事件。自动轮播使用的是线程加AtomicInteger的方式实现。
局部变量 ai, AtomicInteger .局部变量 rwLock, ReadWriteLock ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ...
AtomicInteger是java并发包下面提供的原子类,主要操作的是int类型的整型,通过调用底层Unsafe的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类使用方法实例讲解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
AtomicInteger示例AtomicInteger用于原子增量计数器之类的应用程序。 简短的示例代码: public class AtomicIntegerExample { private final ExecutorService execService = Executors . newFixedThreadPool( 100 );...
JUC 提供了线程安全的并发集合类,如 ConcurrentHashMap、ConcurrentLinkedQueue 等。 3. 原子操作(Atomic Operations): 原子操作是不可再分割的基本操作,JUC 提供了一系列原子操作类,如 AtomicInteger、...