AtomicReferenceArray
2021/5/10 18:59:26
本文主要是介绍AtomicReferenceArray,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
本文翻译自http://tutorials.jenkov.com/java-util-concurrent/atomicreferencearray.html,人工翻译,仅供学习交流。
AtomicReferenceArray
atomic包中的AtomicReferenceArray是一个可以原子更新的对象引用数组。AtomicReferenceArray类也支持比较并交换功能。
创建AtomicReferenceArray
您可以使用AtomicReferenceArray的两个构造函数之一来创建它。第一个构造函数接受一个int作为形参,这个int指定要创建的AtomicReferenceArray的长度,意思是它应该有多少元素的空间。下面是一个使用此构造函数创建AtomicReferenceArray的Java示例:
AtomicReferenceArray array = new AtomicReferenceArray(10);
这个例子创建了一个AtomicReferenceArray,容量为10(它有容纳10个引用对象的空间)。
第二个构造函数接受一个E[]数组作为参数,其中E是对象引用的类型(类)。使用此构造函数创建的AtomicReferenceArray将具有与数组参数相同的容量,并且数组参数中的所有元素将被复制到AtomicReferenceArray中。下面是一个使用此构造函数创建AtomicReferenceArray的Java示例:
Object[] source = new Object[10]; source[5] = "Some string"; AtomicReferenceArray array = new AtomicReferenceArray(source);
这个例子首先创建了一个Object[]数组,并在索引为5的元素中设置一个值。然后它用Object[]数组作为参数创建一个AtomicReferenceArray。您还可以为AtomicReferenceArray设置泛型类型。下面是上面的例子,泛型类型被设置为String:
String[] source = new String[10]; source[5] = "Some string"; AtomicReferenceArray<String> array = new AtomicReferenceArray<String>(source);
get()
get()方法返回具有给定索引的元素的值。索引作为参数传递给get()方法。下面示例:
Object element = array.get(5);
如果AtomicReferenceArray具有泛型类型,get()方法将返回该类型的对象。例如,如果泛型是String,那么你可以像这样调用get():
String element = array.get(5);
注意,不需要对String进行强制转换。
set()
set()方法设置具有特定索引的元素的值。索引和值作为参数传递给set()方法。下面示例:
array.set(5, "another object");
第一个参数是要设置的元素的索引。第二个参数是要为元素设置的值。如果AtomicReferenceArray有一个泛型类型,此参数的类型将是该类型。否则类型为Object。
compareAndSet()
AtomicReferenceArray的compareAndSet()方法将存储在给定元素中的当前引用与预期引用进行比较,如果引用对象相同,用新引用交换当前引用。下面是一个compareAndSwap()的例子:
String string1 = "string1"; String string2 = "string2"; String[] source = new String[10]; source[5] = string1; AtomicReferenceArray<String> array = new AtomicReferenceArray<String>(source); array.compareAndSet(5, string1, string2);
这个例子首先创建了一个String数组,并将索引为5的元素设置为指向string1的引用。它将索引为5的元素的值与string1的引用进行比较,如果它们相同,则将元素的引用设置为string2。如果没有其他线程改变索引为5的元素的引用(在上述情况下,哪一个是不可能的),然后设置成功(设置新的引用)。
附加方法
AtomicIntegerArray还有几个用于特殊目的的方法。您应该查看AtomicIntegerArray类的JavaDoc,以了解有关这些方法的更多信息。
这篇关于AtomicReferenceArray的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22怎么通过控制台去看我的页面渲染的内容在哪个文件中呢-icode9专业技术文章分享
- 2024-12-22el-tabs 组件只被引用了一次,但有时会渲染两次是什么原因?-icode9专业技术文章分享
- 2024-12-22wordpress有哪些好的安全插件?-icode9专业技术文章分享
- 2024-12-22wordpress如何查看系统有哪些cron任务?-icode9专业技术文章分享
- 2024-12-21Svg Sprite Icon教程:轻松入门与应用指南
- 2024-12-20Excel数据导出实战:新手必学的简单教程
- 2024-12-20RBAC的权限实战:新手入门教程
- 2024-12-20Svg Sprite Icon实战:从入门到上手的全面指南
- 2024-12-20LCD1602显示模块详解
- 2024-12-20利用Gemini构建处理各种PDF文档的Document AI管道