gpt4 book ai didi

Java 锁定数组内的元素

转载 作者:行者123 更新时间:2023-12-01 17:39:58 25 4
gpt4 key购买 nike

我有动态哈希表数组

我可以对它们分别使用同步吗?就像synchronized(array[1]) { code .. }、synchronized(array[2]) { code .. }

谢谢

最佳答案

您当然可以在数组中特定位置的对象上进行同步写入:

synchronized (arr[x]) {
...
}

但是,请小心确保您了解这是否正在执行您希望它执行的操作。

这将锁定 arr[x] 引用的特定对象。但是,在访问数组本身方面,它不会为您带来任何线程安全性——换句话说,例如:

  • 当您锁定 arr[x] 处的对象时,另一个线程仍然可能更改 arr[x] 处的对象;
  • 如果两个线程同时访问 arr 的同一位置(要么读取其中的 HashMap /对象,要么设置一个新的),就会出现竞争条件。

我也倾向于同意 akappa ——你正在做的事情听起来有点不寻常,最好将你的问题改写为“我需要什么数据结构才能做 X”,而不是假设一个数组 HashMap 从一开始就是合适的吗?

关于Java 锁定数组内的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2124531/

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