gpt4 book ai didi

java - 我应该将整个对象锁定在修改其一小部分的函数中吗?

转载 作者:太空宇宙 更新时间:2023-11-04 11:51:02 25 4
gpt4 key购买 nike

我开始使用 Java 中的多线程,并遇到了以下问题。

假设我们有一个包含整数集合和其他变量的对象

我想创建一个函数来修改集合的整数之一。
应该锁定整个对象,还是仅锁定集合?

我知道锁定整个对象会起作用,但我担心如果其他线程尝试访问我的对象的其他变量,我的性能会下降。

最佳答案

Should it lock the whole object, or solely the collection?

这主要取决于您在本类(class)中实际掌握的知识。正如已经提到的,您需要同步对所有共享可变状态的访问,因此这里假设您的整个对象是共享可变状态,您确实需要使用隐式或内在锁来保护对其任何字段的任何读写访问。

现在的问题是这些字段如何相互链接?

事实上,假设您的字段是胡萝卜的 List 和汽车的 List,除了共享的可变列表之外,它们没有任何共同点,在这种情况下,您可以为每个字段使用一个专用的隐式锁或内在锁。

但是,例如,如果您有直接相互关联的欧元兑美元汇率和美元兑欧元汇率,则由于您需要确保这两个字段的一致性,因此您将需要对这两个字段使用相同的隐式或内在锁。

因此,总结一下,如果所有字段都使用一个隐式或内在锁相互连接,那么将是一种可行的方法,否则,每组彼此相关的字段都使用一个专用的隐式或内在锁。

关于java - 我应该将整个对象锁定在修改其一小部分的函数中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41832113/

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