原创 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

AtomicReference 原子引用相关推荐

  1. cas引出的ABA问题?如何解决?- 理解原子引用、时间戳(版本号)原子引用

    ABA问题: 假如有两个线程1,2: cas下:1.线程取值完等待,2线程取值并把A改成B,有把B改成A,这是1线程执行会任务A还是原来的A没有发生改变,如果不在乎中间结果,只看收尾,那么没必要解决A ...

  2. java 原子引用_Java 原子性引用 AtomicReference

    更多 Java 并发编程方面的文章,请参见文集<Java 并发编程> AtomicReference An object reference that may be updated ato ...

  3. java原子引用怎么理解_Java 原子性引用 AtomicReference

    AtomicReference An object reference that may be updated atomically. The AtomicReference class provid ...

  4. java 线程分配_Java多线程原子引用分配

    我有一个缓存,该缓存是使用Simeple HashMap实现的.喜欢 - HashMap cache = new HashMap(); 大部分时间都使用此缓存从中读取值.我有另一个重新加载缓存的方法, ...

  5. AtomicReference原子性引用

    AtomicReference AtomicReference类提供了一个可以原子读写的对象引用变量. 原子意味着尝试更改相同AtomicReference的多个线程(例如,使用比较和交换操作)不会使 ...

  6. 我知道乐观锁,但是我的确不知道CAS啊,到底什么是CAS

    目录 写在前面 一.初识CAS(比较并交换) 二.CAS原理(自旋锁.unsafe类) 三.CAS是什么 四.CAS缺点 五.ABA问题 写在前面 相信很多小伙伴对乐观锁.悲观锁都不陌生,但是说到ja ...

  7. java -锁(公平、非公平锁、可重入锁【递归锁】、自旋锁)

    1.公平锁.非公平锁 2.可重入锁(递归锁) 3.自旋锁 AtomicReference atomicReference = new AtomicReference();//原子引用线程 下面代码5秒 ...

  8. java 时间戳_Java并发编程之CAS三CAS的缺点 及解决办法

    Java并发编程之CAS第三篇-CAS的缺点 通过前两篇的文章介绍,我们知道了CAS是什么以及查看源码了解CAS原理.那么在多线程并发环境中,的缺点是什么呢?这篇文章我们就来讨论讨论 本篇是<凯 ...

  9. Java后端落地项目记录

    本篇是一个真实落地项目整个后端开发的记录,记录了我看到和参与的项目从0到1的过程. 目录 一.项目概述 二.项目开发流程层面 三.开发技术层面 四.项目进行期间读书笔记 五.总结 一.项目概述 大概讲 ...

最新文章

  1. springboot 拦截器 日志_跟武哥一起学习Spring Boot,一份全面详细的学习教程
  2. power bi 日期计算_PowerBI 动态计算周内日权重指数
  3. java外挂源码_2.7 万 Star!Github 项目源码辅助阅读神器
  4. python编的游戏越玩越卡_用Python写游戏,不到十分钟就学会了
  5. MTK驱动(84)---GPS 配置
  6. Reboot运维开发Python-03
  7. letter-spacing和word-spacing之间的区别
  8. winform接收http请求_HTTP基础入门
  9. 奔图P3305DN安装官网windows驱动 打印乱码解决方法
  10. 大数据平台及挖掘调研
  11. epson机器人编程 范例_Epson机械手简单实例编程
  12. 寄存器与ROM与RAM
  13. 其实就是为了能有字幕特效,用MeGUI + AVS压制PSP MP4AVC视频03 - 实战简单转换篇...
  14. java web jsp页面跳转,【体育竞投网】-√[官网线路检测]
  15. 我从《阿里云:人工智能应用实践与趋势》白皮书学到了什么?
  16. .NET AutoCAD二次开发之路(二、直线篇)
  17. 基于Eureka服务治理的高可用性注册中心搭建
  18. CDN进行防御的两大原理
  19. 多线程操作数据库时为了防止数据的增删改的混乱该在数据库层还是程序层面上进行同步?
  20. mysql导入wps_WpS数据数据库导入

热门文章

  1. 在java中补零的作用是什么_浅谈Java中的补零扩展和补符号位扩展
  2. bpmn2 vue 设计器_vue项目中使用bpmn-基础篇
  3. LeetCode 237. 删除链表中的节点
  4. 信捷步进指令的使用_步进电机驱动器的模式
  5. python lock_python多线程Lock和RLock的区别
  6. mac json格式化工具_简洁好用的工具都是相似的
  7. centos7.4编译mysql5.6,centos7编译安装mysql5.6
  8. css 竖行进度图_前端学习--汇集了大量 CSS 的使用和学习的示例代码
  9. java 方式配置ssm,关于SSM以及Spring boot中对于Spring MVC配置的问题
  10. 用计算机怎么弹离人愁数字,拇指琴新手入门曲谱——离人愁