【发布时间】:2011-11-04 21:13:45
【问题描述】:
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 thread-safety static-methods