Java 如何避免循环终止中的方法调用
我有下面的方法,我试图避免从while语句调用方法,但我无法理解这段代码在做什么,请有人帮我优化这段代码Java 如何避免循环终止中的方法调用,java,Java,我有下面的方法,我试图避免从while语句调用方法,但我无法理解这段代码在做什么,请有人帮我优化这段代码 public void count(K key,AtomicReferenceArray<K> keys) { int index = key.hashCode() & (keys.length() - 1); while (!key.equals(keys.get(index)) && !keys.compareA
public void count(K key,AtomicReferenceArray<K> keys) {
int index = key.hashCode() & (keys.length() - 1);
while (!key.equals(keys.get(index)) &&
!keys.compareAndSet(index, null, key) &&
!key.equals(keys.get(index))) {
if (index < keys.length() - 1) {
index++;
} else {
index = 0; //wrap
}
}
简短的翻译:从索引开始,通过换行循环数组,直到: 您找到了要找的钥匙
或
您找到了一个空密钥,并设法将密钥插入其中
或
出现竞态条件,另一个线程将您的密钥插入您正在检查的位置。您到底不了解哪一位?@jonskey在while part中设置条件条件哪一部分?它有三个方法调用;只有当第一个条件为真时,才会调用第二个条件,而只有当第二个条件为真时,才会调用第三个条件。。。
while (!key.equals(keys.get(index)) &&
!keys.compareAndSet(index, null, key) &&
!key.equals(keys.get(index)))