java之原子操作

本文介绍Java中实现原子操作的方法,包括AtomicLong类的使用示例。通过此类可以实现线程安全的计数器,避免多线程环境下数值计算的竞争条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    对于一个原子操作来说,是线程安全的,如果在java中存在这样的原子操作,那么到底又哪些?其实JDK里面就自带了原子操作的工具给我们使用了。

   

    有时候原子操作是必须的,在多线程中对一个变量的操作采取原子操作的话,就像数据库中增加一个用户定义的自增的序列号(当然也可以是其它)一样,在同时对一个表执行插入语句很多的时候,它们一样正常的工作,按事先规定的运行。

 

   关于原子操作文档请参考其他知识文档,这里不过多描述。给出一个实用代码作为借鉴:

  

import java.util.concurrent.atomic.AtomicLong;

public class NonblockingLongCounter{

	private AtomicLong counter = new AtomicLong();

	public NonblockingLongCounter(){
	    reset();
	}

	public void reset(){
	    counter.set(0);
	}

	public long getValue(){
	    return counter.get();
	}

	public long increment(){
	    return counter.incrementAndGet();
	}

	public long increment(long value){
	    long v;
	    do{
	        v = counter.get();
	    }
	    while (!counter.compareAndSet(v, v + value));
	    return v + value;
	}

	public long decrement(){
	    return counter.decrementAndGet();
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值