gpt4 book ai didi

java - 静态方法线程中的 Java 数组是否安全?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:47:14 25 4
gpt4 key购买 nike

   public static int rank(int key, int[] a) {
int lo = 0;
int hi = a.length - 1;
while (lo <= hi) {
// Key is in a[lo..hi] or not present.
int mid = lo + (hi - lo) / 2;
if (key < a[mid]) hi = mid - 1;
else if (key > a[mid]) lo = mid + 1;
else return mid;
}
return -1;
}

上面的静态方法进行二分查找。它是线程安全的吗?我知道局部变量是线程安全的,但是这里的“a”是一个数组,所以这意味着它是 Java 中的一个对象,对吧?那是问题吗?该数组只是被读取,没有以任何方式修改,所以我假设这个方法是线程安全的。但我想确保我理解原因。

谢谢!

最佳答案

没有数组通常不是线程安全的。你的代码是否在这种情况下取​​决于其他线程是否可以访问你传入的数组。因为数组是通过引用传递的,所以其他线程可以访问它们。

如果您只在单个线程中创建/修改数组,或者如果您传入一个以线程安全方式复制的副本,那就没问题。

关于java - 静态方法线程中的 Java 数组是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8015797/

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