java并发编程:线程安全管理类--原子操作类--AtomicStampedReference<V>
1.类 AtomicStampedReference<V>
  AtomicStampedReference 维护带有整数“标志”的对象引用,可以用原子方式对其进行更新。
实现注意事项。通过创建表示“已装箱”的 [reference, integer] 对的内部对象,此实现维持带标志的引用。
2.构造函数
AtomicStampedReference
public AtomicStampedReference(V initialRef,
int initialStamp)
- 创建具有给定初始值的新 
AtomicStampedReference。- 参数:
 initialRef- 初始引用initialStamp- 初始标志
 
3.方法详解
getReference
public V getReference()
- 返回该引用的当前值。
 - 
- 返回:
 - 该引用的当前值
 
 
getStamp
public int getStamp()
- 返回该标志的当前值。
 - 
- 返回:
 - 该标志的当前值
 
 
get
public V get(int[] stampHolder)
- 返回该引用和该标志的当前值。典型的用法为 
int[1] holder; ref = v.get(holder);。 - 
- 参数:
 stampHolder- 大小至少为 1 的数组。返回时,stampholder[0]将保存该标志的值。- 返回:
 - 该引用的当前值
 
 
weakCompareAndSet
public boolean weakCompareAndSet(V expectedReference,
V newReference,
int expectedStamp,
int newStamp)
- 如果当前引用 
==预期引用,并且当前标志等于预期标志,则以原子方式将该引用和该标志的值设置为给定的更新值。可能意外失败并且不提供排序保证,所以只有在很少的情况下才对
compareAndSet进行适当的选择。 - 
- 参数:
 expectedReference- 该引用的预期值newReference- 该引用的新值expectedStamp- 该标志的预期值newStamp- 该标志的新值- 返回:
 - 如果成功,则返回 true
 
 
compareAndSet
public boolean compareAndSet(V expectedReference,
V newReference,
int expectedStamp,
int newStamp)
- 如果当前引用 
==预期引用,并且当前标志等于预期标志,则以原子方式将该引用和该标志的值设置为给定的更新值。 - 
- 参数:
 expectedReference- 该引用的预期值newReference- 该引用的新值expectedStamp- 该标志的预期值newStamp- 该标志的新值- 返回:
 - 如果成功,则返回 true
 
 
set
public void set(V newReference,
int newStamp)
- 无条件地同时设置该引用和标志的值。
 - 
- 参数:
 newReference- 该引用的新值newStamp- 该标志的新值
 
attemptStamp
public boolean attemptStamp(V expectedReference,
int newStamp)
- 如果当前引用 
==预期引用,则以原子方式将该标志的值设置为给定的更新值。此操作的任何给定调用都可能会意外失败(返回false),但是在当前值保持预期值而且没有其他线程也在尝试设置该值时,重复调用将最终获得成功。 - 
- 参数:
 expectedReference- 该引用的预期值newStamp- 该标志的新值- 返回:
 - 如果成功,则返回 true
 
 
java并发编程:线程安全管理类--原子操作类--AtomicStampedReference<V>的更多相关文章
- java并发编程 线程基础
		
java并发编程 线程基础 1. java中的多线程 java是天生多线程的,可以通过启动一个main方法,查看main方法启动的同时有多少线程同时启动 public class OnlyMain { ...
 - Java 并发编程 | 线程池详解
		
原文: https://chenmingyu.top/concurrent-threadpool/ 线程池 线程池用来处理异步任务或者并发执行的任务 优点: 重复利用已创建的线程,减少创建和销毁线程造 ...
 - Java并发编程:线程间通信wait、notify
		
Java并发编程:线程间协作的两种方式:wait.notify.notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者 ...
 - Java并发编程:线程和进程的创建(转)
		
Java并发编程:如何创建线程? 在前面一篇文章中已经讲述了在进程和线程的由来,今天就来讲一下在Java中如何创建线程,让线程去执行一个子任务.下面先讲述一下Java中的应用程序和进程相关的概念知识, ...
 - java并发编程 | 线程详解
		
个人网站:https://chenmingyu.top/concurrent-thread/ 进程与线程 进程:操作系统在运行一个程序的时候就会为其创建一个进程(比如一个java程序),进程是资源分配 ...
 - java并发编程系列二:原子操作/CAS
		
什么是原子操作 不可被中断的一个或者一系列操作 实现原子操作的方式 Java可以通过锁和循环CAS的方式实现原子操作 CAS( Compare And Swap ) 为什么要有CAS? Compar ...
 - Java并发编程——线程池的使用
		
在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统 ...
 - Java并发编程——线程池
		
本文的目录大纲: 一.Java中的ThreadPoolExecutor类 二.深入剖析线程池实现原理 三.使用示例 四.如何合理配置线程池的大小 一.Java中的ThreadPoolExecutor类 ...
 - Java并发编程(三)Thread类的使用
		
一.线程的状态 线程从创建到最终的消亡,要经历若干个状态.一般来说,线程包括以下这几个状态:创建(new).就绪(runnable).运行(running).阻塞(blocked).time wait ...
 - [转]JAVA并发编程学习笔记之Unsafe类
		
1.通过Unsafe类可以分配内存,可以释放内存:类中提供的3个本地方法allocateMemory.reallocateMemory.freeMemory分别用于分配内存,扩充内存和释放内存,与C语 ...
 
随机推荐
- 20145330 《网络对抗》 Web基础
			
20145330 <网络对抗> Web基础 1.实践内容 (1)Web前端HTML (2)Web前端javascipt (3)Web后端:MySQL基础:正常安装.启动MySQL,建库.创 ...
 - android 通过webview调起支付宝app支付
			
网站学习:http://blog.csdn.net/zhuyu19911016520/article/details/71763900
 - JS控制页面内容
			
JS操作页面内容 innerText:普通标签内容(自身文本与所有子标签文本)innerHTML:包含标签在内的内容(自身文本及子标签的所有)value:表单标签的内容outerHTML:包含自身标签 ...
 - linux下的下载之道
			
a.场景: 平时会使用百度网盘下载电影,但是用ios版的百度云实在是有点慢,而平时不用windows,因此只能在linux上寻找解决之道. b.背景(我正在使用中): linux:ubuntu 14. ...
 - HDU 3404 Switch lights(Nim积)题解
			
题意:在一个二维平面中,有n个灯亮着并告诉你坐标,每回合需要找到一个矩形,这个矩形xy坐标最大的那个角落的点必须是亮着的灯,然后我们把四个角落的灯状态反转,不能操作为败 思路:二维Nim积,看不懂啊, ...
 - win10中mount和unmount iso文件
			
https://www.windowscentral.com/how-mount-or-unmount-iso-images-windows-10 You can also right-click t ...
 - 02_HBase集群部署
			
HBase集群部署 HBase是分布式数据库,本身也需要借助zookeeper进行集群节点间的协调(Master, RegionServer), 可以使用HBase自带的zookeeper,也可以使用 ...
 - 【转】xml节点解析成字符串的方法
			
网址:http://blog.csdn.net/shanzhizi/article/details/8817532 ZC: 这是 libxml2的 之前汇总了一篇关于xml文档与字符串转换的文章,文章 ...
 - 技术分享:SSH实战项目
			
1.需求分析 系统概述: 企业人事管理系统. 要求对员工信息进行维护. 后台系统先登录,才能操作员工;添加.修改.删除. 没有登录,只能查看列表,不能操作. 功能分类: 1)[管理员模块] 注册/登录 ...
 - 《剑指offer》第四题(二维数组中的查找)
			
// 二维数组中的查找 // 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按 // 照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个 // 整数,判断数组 ...