并发编程-concurrent指南-原子操作类-AtomicLong
可以用原子方式更新的 long
值。有关原子变量属性的描述,请参阅 java.util.concurrent.atomic
包规范。AtomicLong
可用在应用程序中(如以原子方式增加的序列号),并且不能用于替换 Long
。但是,此类确实扩展了 Number
,允许那些处理基于数字类的工具和实用工具进行统一访问。
1.AtomicLong
aaarticlea/png;base64,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" alt="" />
2.构造方法详解
AtomicLong
public AtomicLong(long initialValue)
- 创建具有给定初始值的新 AtomicLong。
- 参数:
initialValue
- 初始值
AtomicLong
public AtomicLong()
创建具有初始值 0
的新 AtomicLong。
3.方法详解
get
public final long get()
- 获取当前值。
-
- 返回:
- 当前值
set
public final void set(long newValue)
- 设置为给定值。
-
- 参数:
newValue
- 新值
lazySet
public final void lazySet(long newValue)
- 最后设置为给定值。
-
- 参数:
newValue
- 新值- 从以下版本开始:
- 1.6
getAndSet
public final long getAndSet(long newValue)
- 以原子方式设置为给定值,并返回旧值。
-
- 参数:
newValue
- 新值- 返回:
- 以前的值
compareAndSet
public final boolean compareAndSet(long expect,
long update)
- 如果当前值
==
预期值,则以原子方式将该值设置为给定的更新值。 -
- 参数:
expect
- 预期值update
- 新值- 返回:
- 如果成功,则返回 true。返回 false 指示实际值与预期值不相等。
weakCompareAndSet
public final boolean weakCompareAndSet(long expect,
long update)
- 如果当前值
==
预期值,则以原子方式将该值设置为给定的更新值。可能意外失败并且不提供排序保证,所以只能在很少的情况下对
compareAndSet
进行适当地选择。 -
- 参数:
expect
- 预期值update
- 新值- 返回:
- 如果成功,则返回 true。
getAndIncrement
public final long getAndIncrement()
- 以原子方式将当前值加 1。
-
- 返回:
- 以前的值
getAndDecrement
public final long getAndDecrement()
- 以原子方式将当前值减 1。
-
- 返回:
- 以前的值
getAndAdd
public final long getAndAdd(long delta)
- 以原子方式将给定值添加到当前值。
-
- 参数:
delta
- 要添加的值- 返回:
- 以前的值
incrementAndGet
public final long incrementAndGet()
- 以原子方式将当前值加 1。
-
- 返回:
- 更新的值
decrementAndGet
public final long decrementAndGet()
- 以原子方式将当前值减 1。
-
- 返回:
- 更新的值
addAndGet
public final long addAndGet(long delta)
- 以原子方式将给定值添加到当前值。
-
- 参数:
delta
- 要添加的值- 返回:
- 更新的值
toString
public String toString()
intValue
public int intValue()
longValue
public long longValue()
floatValue
public float floatValue()
- 从类
Number
复制的描述 - 以
float
形式返回指定的数值。这可能会涉及到舍入。 -
- 指定者:
- 类
Number
中的floatValue
-
- 返回:
- 转换为
float
类型后该对象表示的数值。
doubleValue
public double doubleValue()
- 从类
Number
复制的描述 - 以
double
形式返回指定的数值。这可能会涉及到舍入。 -
- 指定者:
- 类
Number
中的doubleValue
-
- 返回:
- 转换为
double
类型后该对象表示的数值。
转自:http://www.cnblogs.com/tonylovett/p/5254548.html
并发编程-concurrent指南-原子操作类-AtomicLong的更多相关文章
- 并发编程-concurrent指南-原子操作类-AtomicInteger
在java并发编程中,会出现++,--等操作,但是这些不是原子性操作,这在线程安全上面就会出现相应的问题.因此java提供了相应类的原子性操作类. 1.AtomicInteger
- 并发编程-concurrent指南-原子操作类-AtomicBoolean
类AtomicBoolean
- 并发编程-concurrent指南-原子操作类-AtomicReference
1.类 AtomicReference<V> public class AtomicReference<V>extends Objectimplements Serializa ...
- 并发编程-concurrent指南-线程池ExecutorService的实例
1.new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() { @Override public void run() { ...
- 并发编程-concurrent指南-计数器CountDownLatch
java.util.concurrent.CountDownLatch 是一个并发构造,它允许一个或多个线程等待一系列指定操作的完成. CountDownLatch 以一个给定的数量初始化.count ...
- 并发编程-concurrent指南-ConcurrentMap
ConcurrentMap 是个接口,你想要使用它的话就得使用它的实现类之一. ConcurrentMap,它是一个接口,是一个能够支持并发访问的java.util.map集合: 在原有java.ut ...
- 并发编程-concurrent指南-Lock-可重入锁(ReentrantLock)
可重入和不可重入的概念是这样的:当一个线程获得了当前实例的锁,并进入方法A,这个线程在没有释放这把锁的时候,能否再次进入方法A呢? 可重入锁:可以再次进入方法A,就是说在释放锁前此线程可以再次进入方法 ...
- 并发编程-concurrent指南-Lock
既然都可以通过synchronized来实现同步访问了,那么为什么还需要提供Lock?这个问题将在下面进行阐述.本文先从synchronized的缺陷讲起,然后再讲述java.util.concurr ...
- 并发编程-concurrent指南-线程池ExecutorService的使用
有几种不同的方式来将任务委托给 ExecutorService 去执行: execute(Runnable) submit(Runnable) submit(Callable) invokeAny(… ...
随机推荐
- SharePoint创建内容类型
SharePoint创建内容类型 内容类型的用途是多种多样的.创建内容类型也非常简单. 1. 点击网站操作--网站设置. 2. 点击网站内容类型,点击创建. 3. 命名Beginning_ShareP ...
- jquery 包裹标签
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- passed into methods by value java专题
java没有引用传递只有按值传递,没有引用传递只有按值传递,值传递.因为Primitive类型的值不能改变,所以method不能更改调用方传的primitive 值.因为method更改的是Primi ...
- 初探WINDOWS下IME编程
初探WINDOWS下IME编程作者:广东南海市昭信科技有限公司-李建国 大家知道,DELPHI许多控件有IME属性.这么好用的东西VC可没自带,怎么办呢?其实,可通过注册表,用API实现.下面说一下本 ...
- 【全面解禁!真正的Expression Blend实战开发技巧】十一章 全面解析布局(Grid & Canvas &StackPanel &Wrappanel)
原文:[全面解禁!真正的Expression Blend实战开发技巧]十一章 全面解析布局(Grid & Canvas &StackPanel &Wrappanel) 写这篇文 ...
- window下golang生成静态库给C语言调用
buidmod为c-archive能在window下生成 ,c-shared则不行 1.golang生成c-archive静态库 main.go package main import "C ...
- 零元学Expression Blend 4 - Chapter 27 PathlistBox被Selected时的蓝底蓝框问题
原文:零元学Expression Blend 4 - Chapter 27 PathlistBox被Selected时的蓝底蓝框问题 最近收到网友Cloud的来信,询问我有关放进PathlistBox ...
- 在Delphi中创建线程,请一定使用BeginThread()代替CreateThread()创建线程!(更好的管理异常)
在Delphi中创建线程,请一定使用BeginThread()代替CreateThread()创建线程! 如果直接使用Win32的API函数CreateThread()创建多个线程,也是可以创建的.但 ...
- 利用docker在window7下安装TensorFlow
安装过程下碰了不少坑,记录一下安装过程,方便以后有需要时复用. 1.安装docker 下载最新版本的docker并且默认安装即可,安装后打开Docker Quickstart Terminal,初次进 ...
- 80%的岗位是没有太多能力上的要求的(少部分聪明的人开始觉醒,这部分一定是那些主动追求、主动学习的人;30岁现象能区分真正专业和不学无术的人)good
不要沦陷程序员的30岁问题 热门> 就是学习能力和工作热情态度的问题. 我之前也跟作者一样思考过这个问题,答案是否定的. 在知识积累的行业,年纪越大,越吃香,比如金融,医学,IT.就怕3 ...