AtomicBoolean介绍
网上资料:
使用 AtomicBoolean 高效并发处理 “只初始化一次” 的功能要求:
1 |
privatestaticnewAtomicBoolean(false); |
2 |
3 |
publicvoid |
4 |
{ |
5 |
if(false,true) |
6 |
{ |
7 |
// |
8 |
} |
9 |
} |
普通方式:
1 |
publicstatic false; |
2 |
3 |
publicvoid |
4 |
{ |
5 |
if(false){ |
6 |
initializedtrue; |
7 |
// |
8 |
} |
9 |
} |
帮助文档:
java.util.concurrent.atomic
类 AtomicBoolean
java.lang.Object
java.util.concurrent.atomic.AtomicBoolean
- 所有已实现的接口:
- Serializable
-
public class AtomicBoolean
- extends Object
- implements Serializable
可以用原子方式更新的 boolean 值。有关原子变量属性的描述,请参阅 java.util.concurrent.atomic 包规范。AtomicBoolean 可用在应用程序中(如以原子方式更新的标志),但不能用于替换 Boolean。
- 从以下版本开始:
- 1.5
- 另请参见:
- 序列化表格
| 构造方法摘要 | |
|---|---|
AtomicBoolean() 使用初始值 false 创建新的 AtomicBoolean。 |
|
AtomicBoolean(boolean initialValue) 使用给定的初始值创建新的 AtomicBoolean。 |
|
| 方法摘要 | |
|---|---|
boolean |
compareAndSet(boolean expect, boolean update) 如果当前值 == 预期值,则以原子方式将该值设置为给定的更新值。 |
boolean |
get() 返回当前值。 |
boolean |
getAndSet(boolean newValue) 以原子方式设置为给定值,并返回以前的值。 |
void |
lazySet(boolean newValue) 最终设置为给定值。 |
void |
set(boolean newValue) 无条件地设置为给定值。 |
String |
toString() 返回当前值的字符串表示形式。 |
boolean |
weakCompareAndSet(boolean expect, boolean update) 如果当前值 == 预期值,则以原子方式将该值设置为给定的更新值。 |
| 从类 java.lang.Object 继承的方法 |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| 构造方法详细信息 |
|---|
AtomicBoolean
public AtomicBoolean(boolean initialValue)
- 使用给定的初始值创建新的
AtomicBoolean。- 参数:
initialValue- 初始值
AtomicBoolean
public AtomicBoolean()
- 使用初始值
false创建新的AtomicBoolean。
| 方法详细信息 |
|---|
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()
AtomicBoolean介绍的更多相关文章
- AtomicBoolean介绍与使用
java.util.concurrent.atomic.AtomicBoolean 继承自Object. 介绍: 在这个Boolean值的变化的时候不允许在之间插入,保持操作的原子性 方法和举例 ...
- Java并发编程(四):线程安全性
一.定义 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些进程将如何交替执行,并且在主调代码中不需要额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的. 二.线程安 ...
- Java并发之原子操作类汇总
当程序更新一个变量时,如果是多线程同时更新这个变量,可能得到的结果与期望值不同.比如:有一个变量i,A线程执行i+1,B线程也执行i+1,经过两个线程的操作后,变量i的值可能不是期望的3,而是2.这是 ...
- 关于Synchornized,Lock,AtomicBoolean和volatile的区别介绍
1. volatile 变量可以被看作是一种 "程度较轻的 synchronized". 2. Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的 ...
- JMM以及并发三大特性介绍(包括解决方案)
JMM结构图: JMM对同步的8种操作: JMM的同步规则: Countdownlatch介绍: 该类功能是可以阻塞线程,并在保证线程满足特定条件下,继续执行.如上图,Countdownlatch的c ...
- juc原子类之二:基本类型原子类AtomicInteger(AtomicLong、AtomicBoolean)
一.AtomicInteger简介 AtomicInteger, AtomicLong和AtomicBoolean这3个基本类型的原子类的原理和用法相似.以AtomicInteger对基本类型的原子类 ...
- java并发编程(十一)----(JUC原子类)基本类型介绍
上一节我们说到了基本原子类的简单介绍,这一节我们先来看一下基本类型: AtomicInteger, AtomicLong, AtomicBoolean.AtomicInteger和AtomicLong ...
- AQS源码解析(一)-AtomicBoolean源码解析
基本类: AtomicInteger AtomicLong AtomicBoolean 数组类型: AtomicIntegerArray AtomicLongArray AtomicReference ...
- CompletableFuture用法介绍
一.CompletableFuture用法入门介绍 入门介绍的一个例子: package com.cy.java8; import java.util.Random; import java.util ...
随机推荐
- ZJNU 1534 - Problem Robot--高级
因为是从(0,0)点开始以1,3,9,27,....的步数走的 其实可以每走一步后,以机器人为中心,平面所有坐标全部缩小3倍 那么本应该走3步的路现在只需要走1步就可以到达那个点 那么对于机器人来说这 ...
- 优秀的github java项目
转载:https://www.zhihu.com/question/24834285/answer/251369977 biezhi/blade:先推荐下自己的哈哈,一款轻量级.高性能.简洁优雅的MV ...
- [YNOI2018]五彩斑斓的世界&CF896E(分块+并查集)
由于晚上比赛二连(Atcoder&codeforces),外加复习学考,所以暂时没时间写了. 贴个O(n√n)的分块代码,洛谷和cf上都过了,但垃圾bzoj卡不过去,不改了. #include ...
- upstream实现内网网站在公网访问
背景描述:公司内网有个网站aa.com,B部门需要访问这个aa.com,但是网站部署在内网服务器(服务器是192.168.1网段),B部门网段是192.168.100 需求描述:B部门需要访问aa.c ...
- 1.docker 的 安装
1.mac 安装docker 1.1 打开 https://docs.docker.com/docker-for-mac/install/ 1.2 下载 dmg 文件 1.3 打开 docker,d ...
- js 选中div中的文本
function selectText(element) { var text = document.getElementById(element); if (document.body.create ...
- 用JS打开新窗口,防止被浏览器阻止的方法
相信做web前端或者使用JS的朋友都会遇到需要在新窗口打开页面的情况,现在浏览器大都具有弹出窗口拦截功能,所以传统的window.open()不再那么好用了.借鉴于网上查到的方法和我个人的实践,把弹出 ...
- IMX6开发板qt creator直接编译ARM架构程序
除了通过 11.2.2 小节通过命令行的操作来编译在 iTOP-imx6 开发板上运行的程序,还可以直接在 qtcreator 上设置,然后每次编译的程序都可以在开发板上运行.如下图所示,打开 qtc ...
- maven仓库镜像、私服与jdk版本配置
--配置全局镜像,setting.xml <mirrors> <mirror> <id>alimaven</id> <name>aliyun ...
- vue开发之图片加载不出来问题解决
在使用vue开发项目的时候,经常会遇到的一个问题就是:图片加载不出来.下面是我总结的几种图片加载不出来的情况及解决办法. 一.项目打包完成后,打开整体空白 1.路径问题 原因 在vue+webpack ...
java.util.concurrent.atomic.AtomicBoolean