gpt4 book ai didi

java - 'thread-safe' 在 Java 中的集合或数组的上下文中意味着什么?

转载 作者:行者123 更新时间:2023-11-29 05:14:17 26 4
gpt4 key购买 nike

我觉得很困惑,我觉得是定义。

以 CopyOnWriteArrayList 为例。 javadocs 说“ArrayList 的线程安全变体,其中所有可变操作(添加、设置等)都是通过制作底层数组的新副本来实现的……这个数组在迭代器的生命周期内永远不会改变,所以干扰是不可能的”

但是如果我有一个可变的 Person 对象,并创建一个 CopyOnWriteArrayList<Person> ,当我正在迭代数组时,肯定没有什么可以阻止另一个线程修改我的 Person 对象上的字段吗?

因此,当我们谈论一个对象是线程安全的时,它是否总是具有(隐式)限定条件,当然,如果您使用保留引用的对象构造它,您仍然可以更改其状态?这是什么被认为是 ITS 状态的问题,而不是它碰巧与之有密切关联的对象的状态?

谢谢

最佳答案

当文档谈到集合的线程安全时,它们指的是集合本身的线程安全,而不是其中的对象。显然,集合不能对您的可变对象做出任何保证。

CopyOnWriteArrayList 将尽可能多地保护它,即它的内部状态。另一方面,对象的状态在集合外部,因此不 protected 。

关于java - 'thread-safe' 在 Java 中的集合或数组的上下文中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27140179/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com