AtomicReference 原子引用

 

 

 

原创 2016年03月04日 13:35:20
  • 7638

1.简介

赋值操作不是线程安全的。若想不用锁来实现,可以用AtomicReference<V>这个类,实现对象引用的原子更新。

使用场景:一个线程使用student对象,另一个线程负责定时读表,更新这个对象。那么就可以用AtomicReference这个类。

java.util.concurrent.atomic.AtomicReference<V>
类的名字。

2.常用方法

java.util.concurrent.atomic.AtomicReference.AtomicReference(V initialValue)
构造函数。
V java.util.concurrent.atomic.AtomicReference.get()
返回当前的引用。
boolean java.util.concurrent.atomic.AtomicReference.compareAndSet(V expect, V update)

如果当前值与给定的expect相等,(注意是引用相等而不是equals()相等),更新为指定的update值。

V java.util.concurrent.atomic.AtomicReference.getAndSet(V newValue)

原子地设为给定值并返回旧值。

void java.util.concurrent.atomic.AtomicReference.set(V newValue)

注意此方法不是原子的。不明白为什么要提供这个方法,很容易误用。

转载于:https://www.cnblogs.com/ydxblog/p/7988487.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354482.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB基础使用

5.MongoDB基础使用 5.1.常用的命令&#xff08;重点&#xff09; > Help 查看帮助 显示数据库列表 > show dbs 创建数据库 > use dbname 如果数据库不存在&#xff0c;则创建数据库dbname&#xff0c;否则切换到指定数据库dbname。创建的数据库并不在数据库的列表中…

使用一些可选的将字符串配置属性转换为其他类型

有一天&#xff0c;您遇到一些代码&#xff0c;并认为这很漂亮&#xff0c;为什么我没有想到呢&#xff1f; 因此&#xff0c;我的长期同事Mark Warner在使用方法引用处理从String进行转换的标准名称/值存储模式方面有一个不错的选择。 int size store.getProperty("cac…

AttributeError: module 're' has no attribute 'sub'

文件不能同名&#xff08;import re re.py)转载于:https://www.cnblogs.com/realmonkeykingsun/p/7992613.html

django-uwsgi配置

一、安装uwsgi uwsgi是一个应用服务器&#xff0c;非静态文件的网络请求就必须通过他完成&#xff0c;他也可以充当静态文件服务器&#xff0c;但不是它的强项。 注意&#xff1a;uwsgi必须安装在系统级别的Python环境中&#xff0c;不要安装到虚拟环境中。 uwsgi是使用pytho…

C++堆和栈详解(转)

一、预备知识—程序的内存分配 一个由C/C编译的程序占用的内存分为以下几个部分 1、栈区&#xff08;stack&#xff09;— 由编译器自动分配释放 &#xff0c;存放函数的参数值&#xff0c;局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区&#xf…

JavaFX技巧来节省内存! 属性和可观察物的阴影场

在 JavaFX的世界中&#xff0c; Properties API允许UI开发人员将值绑定到UI控件。 这种功能非常容易&#xff0c;但是当对象模型经常使用属性时&#xff0c;应用程序可能会很快耗尽内存。 我通常会编写两个单独的对象&#xff0c;例如pojo类和表示模型对象。 此技术通常在基于S…

nginx部署与小程序配置

nginx部署与小程序配置说明 1、安装nginx $ sudo apt-get update $ sudo apt-get install nginx2、配置https: 查看&#xff1a; https://help.aliyun.com/knowledge_detail/95491.html?spm5176.2020520154.cas.64.7dd7Quq8Quq8ap mkdir /opt/cert把证书上传到这个文件夹…

Maven实战:Pom.xml详解

什么是pom? pom作为项目对象模型。通过xml表示maven项目&#xff0c;使用pom.xml来实现。主要描述了项目&#xff1a;包括配置文件&#xff1b;开发者需要遵循的规则&#xff0c;缺陷管理系统&#xff0c;组织和licenses&#xff0c;项目的url&#xff0c;项目的依赖性&…

Liunx 命令大全

1.ifconfig 用于配置和显示Linux内核中网络接口的网络参数 2.type 用来显示指定命令的类型&#xff0c;判断给出的指令是内部 令还是外部指令 3.man Linux下的帮助指令&#xff0c;通过man指令可以查看Linux 中的指令帮助、配置文件帮助和编程帮助等信息 4.help 用于显示 shell…

如何在Hibernate Search 5.5.2 / Apache Lucene 5.4.x中处理停用词?

停用词&#xff0c;例如[“ a”&#xff0c;“ an”&#xff0c;“ and”&#xff0c;“ are”&#xff0c;“ as”&#xff0c;“ at”&#xff0c;“ be”&#xff0c;“ but”&#xff0c;“ by”&#xff0c;“ for”&#xff0c;“ if”&#xff0c;“在”&#xff0c;“成…

windows路径操作API函数

路径截断与合并函数 PathRemoveArgs 去除路径的参数 PathRemoveBackslash 去除路径最后的反斜杠“\” PathAddBackslash 在路径最后加上反斜杠“\” PathRemoveBlanks 去除路径前后的空格 PathAddExtension 在文件路径后面加上扩展名 PathRemoveExtensio…

docker安装问题

1、卸载docker重装 将所有含docker的文件找出来 find / -name ‘docker’ 或cd到根目录后搜索&#xff1a; find -name ‘docker 删除搜索的文件或目录&#xff1a; rm -rf … 删除全部的docker有关文件命令 rm -rf $(find -name ‘docker’) 2、安装docker 安装依赖 su…

【BZOJ1814】Ural 1519 Formula 1 插头DP

【BZOJ1814】Ural 1519 Formula 1 题意&#xff1a;一个 m * n 的棋盘,有的格子存在障碍,求经过所有非障碍格子的哈密顿回路个数。(n,m<12) 题解&#xff1a;插头DP板子题&#xff0c;刷板子&#xff0c;附带题解链接。 如何存放状态呢&#xff1f;可以采用hash&#xff0c;…

docker-compose安装问题

&#xff08;一&#xff09;docker-compose安装超时 1、设置一个timeout pip install --default-timeout100 docker-compos2、下载到本地 docker_compose-1.27.0-py2.py3-none-any.whl首先去下载&#xff1a;https://pypi.org/project/docker-compose/#files 然后用xftp上传…

java更改包名称_更改Java包名称如何改变我的系统架构

java更改包名称即使只是少量更改角度&#xff0c;也可能对您如何使用系统产生深远影响。 假设您正在用Java编写Web应用程序。 在系统中&#xff0c;您处理订单&#xff0c;客户和产品。 作为一个Web应用程序&#xff0c;您的类包括诸如Controller&#xff0c;PersonRepository&…

linux系统界面光标不见了---木有了

直接在界面输入命令 echo -e “\033[?25l” 隐藏光标 echo -e “\033[?25h” 显示光标

Java----前端验证之验证码额实现

验证码是常用的登录验证方式之一,最大的作用就是保证安全,验证码的生成在java中实现的方式有很多种,比如后台生成传输到前端页面,在前台直接生成进行验证,下面写一个最简单实现验证码验证登录的例子. 生成验证码: 验证码验证逻辑: From表单登录: 没错,就这么的简单.在scripts生…

使用Spring Boot隔离集成测试和模拟依赖项

集成测试可能很慢且不可靠&#xff0c;因为它们依赖于系统中过多的组件。 在某种程度上&#xff0c;这是不可避免的&#xff1a;这里的集成测试是为了验证系统的每个部分如何与其他内部或外部组件一起玩。 但是&#xff0c;我们可以通过仅分解所需的依赖关系而不是整个系统来改…

CSS浏览器兼容性问题

CSS浏览器兼容性问题 1、浏览器CSS样式初始化 最简单的初始化方法就是&#xff1a;使用通配符&#xff08;*&#xff09;&#xff0c;重置所有的初始样式。 *{margin: 0;padding: 0; } /* 10px1rem */ html {overflow-y:scroll;font-size:62.5%; } a{text-decoration:none; …

Ubuntu 16.04下使用Wine安装Xshell 4和Xftp 4

说明&#xff1a; 1、使用的Wine版本是深度出品&#xff08;Deepin&#xff09;&#xff0c;已经精简了很多没用的配置&#xff0c;使启动能非常快&#xff0c;占用资源小。 2、由于Xshell 5的C库无法在这个Wine版本运行&#xff0c;即使升级官方原版的2版本也无法解决&#xf…