并发编程-concurrent指南-原子操作类-AtomicBoolean
类AtomicBoolean
aaarticlea/png;base64,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" alt="" />
可以用原子方式更新的 boolean
值。有关原子变量属性的描述,请参阅 java.util.concurrent.atomic
包规范。AtomicBoolean
可用在应用程序中(如以原子方式更新的标志),但不能用于替换 Boolean
。
2.构造函数
1.AtomicBoolean()
使用初始值 false
创建新的 AtomicBoolean
。
2.AtomicBoolean(
boolean initialValue
)
使用给定的初始值创建新的 AtomicBoolean
。
3.方法详解
get
public final boolean get()
- 返回当前值。
-
- 返回:
- 当前值
compareAndSet
public final boolean compareAndSet(boolean expect,
boolean update)
- 如果当前值
==
预期值,则以原子方式将该值设置为给定的更新值。 -
- 参数:
expect
- 预期值update
- 新值- 返回:
- 如果成功,则返回 true。返回 False 指示实际值与预期值不相等。
weakCompareAndSet
public boolean weakCompareAndSet(boolean expect,
boolean update)
- 如果当前值
==
预期值,则以原子方式将该值设置为给定的更新值。可能意外失败并且不提供排序保证,因此几乎只是
compareAndSet
的适当替代方法。 -
- 参数:
expect
- 预期值update
- 新值- 返回:
- 如果成功,则返回 true。
set
public final void set(boolean newValue)
- 无条件地设置为给定值。
-
- 参数:
newValue
- 新值
lazySet
public final void lazySet(boolean newValue)
- 最终设置为给定值。
-
- 参数:
newValue
- 新值- 从以下版本开始:
- 1.6
getAndSet
public final boolean getAndSet(boolean newValue)
- 以原子方式设置为给定值,并返回以前的值。
-
- 参数:
newValue
- 新值- 返回:
- 以前的值
toString
public String toString()
转自:https://www.cnblogs.com/tonylovett/p/5254630.html
并发编程-concurrent指南-原子操作类-AtomicBoolean的更多相关文章
- 并发编程-concurrent指南-原子操作类-AtomicInteger
在java并发编程中,会出现++,--等操作,但是这些不是原子性操作,这在线程安全上面就会出现相应的问题.因此java提供了相应类的原子性操作类. 1.AtomicInteger
- 并发编程-concurrent指南-原子操作类-AtomicLong
可以用原子方式更新的 long 值.有关原子变量属性的描述,请参阅 java.util.concurrent.atomic 包规范.AtomicLong 可用在应用程序中(如以原子方式增加的序列号), ...
- 并发编程-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(… ...
随机推荐
- Entity framework 配置文件,实现类,测试类
配置文件信息App.config: 数据库IP地址为192.168.2.186 ,数据库名为 Eleven-Six , 用户名 123456,密码654321 <?xml version=&qu ...
- 关于WPF你应该知道的2000件事
原文 关于WPF你应该知道的2000件事 以下列出了迄今为止为WPF博客所知的2,000件事所创建的所有帖子. 帖子总数= 1,201 动画 #7 - 基于属性的动画 #686 - 使用动画制作图像脉 ...
- WPF 多路绑定
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- 枚举与字符串转及RecordSet转XML,JSON
function AdoToJs(ado: TADOQuery): string; var I, J: Integer; json: string; begin json := '{columns:[ ...
- PHP自动加载类__autoload()浅谈
在面向对象编程中,都是以对象为单位的操作,如果我有两个不同的类,类A和类B,在同一个文件里,实例化对象,就能在这个文件同时调用类A和类B的函数 <?php #a.php class A{ pub ...
- Socket小白篇-附加TCP/UDP简介
Socket小白篇-附加TCP/UDP简介 Socket 网络通信的要素 TCP和UDP Socket的通信流程图 1.Socket 什么是Socket Socket:又称作是套接字,网络上的两个程序 ...
- linux清除日志文件
#!/bin/bash # 清除log文件 LOG_DIR=/var/log ROOT_UID= # $UID为0的时候,用户才具有root用户的权限 LINES= # 默认的保存行数 E_XCD= ...
- Delphi移动开发笔记(一)
Delphi从XE4版本就开始支持移动开发了,但是笔者最近才开始学习这块内容.因为笔者原来一直使用的是Delphi7,对于很多新语法没有了解过,所以把其中一些东西记录下来. 程序开发,调 ...
- C++&Win32写的空当接龙
上学期做课程设计,老师让我做windows自带的空当接龙游戏,写了一个礼拜,完全仿windows的呵呵.不过也不全一样,有一些细节一直没有时间弄,没办法最近比较懒... 与windows下的相比,我做 ...
- DELPHI之关于String的内存分配(引)
在函数.过程或者方法中定义一个字符串变量时,由于我们知道在函数.过程或者方法中定义的变量为局部变量,它的内存 是在栈中分配的,但是这里有个小细节我们要注意,对于一个局部的字符串变量,它的大小为4字节, ...