1097. Напишите потокобезопасную реализацию класса с неблокирующим методом BigInteger next(), который возвращает элементы последовательности: [1, 2, 4, 8, 16, ...]. Ниже приведена потокобезопасная реализация класса с неблокирующим методом next(), который возвращает элементы последовательности [1, 2, 4, 8, 16, ...]: import java.math.BigInteger;
import java.util.concurrent.atomic.AtomicReference;
public class PowerOfTwoSequence {
private AtomicReference<BigInteger> current;
public PowerOfTwoSequence() {
current = new AtomicReference<>(BigInteger.ONE);
}
public BigInteger next() {
while (true) {
BigInteger currentValue = current.get();
BigInteger nextValue = currentValue.multiply(BigInteger.TWO);
if (current.compareAndSet(currentValue, nextValue)) {
return currentValue;
}
}
}
} В этой реализации используется класс AtomicReference для обеспечения атомарного доступа к текущему зна