В чем причина реализации метода «get» метода AtomicMarkableReference в Java?

В ЯвеAtomicMarkableReference может использоваться для атомарного обновления ссылки на объект вместе с битом метки.

Javadoc состояния:

Замечание по реализации: Эта реализация поддерживает помечаемые ссылки, создавая внутренние объекты, представляющие «коробочные» пары [reference, boolean].

Это верно в соответствии с тем, что можно увидеть в исходном коде Java 8 класса:

package java.util.concurrent.atomic;

public class AtomicMarkableReference<V> {

    private static class Pair<T> {
        final T reference;
        final boolean mark;
        private Pair(T reference, boolean mark) {
            this.reference = reference;
            this.mark = mark;
        }
        static <T> Pair<T> of(T reference, boolean mark) {
            return new Pair<T>(reference, mark);
        }
    }

    private volatile Pair<V> pair;

    public AtomicMarkableReference(V initialRef, boolean initialMark) {
        pair = Pair.of(initialRef, initialMark);
    }

    // [...] class methods
}

Есть ли причина за дизайнполучить метод класса?

public V get(boolean[] markHolder) {
    Pair<V> pair = this.pair;
    markHolder[0] = pair.mark;
    return pair.reference;
}

Какой смысл использовать такой логический массив (вместо того, чтобы возвращать пару значений)? Является ли выбор на основе параллелизма? Или, возможно, старый код?

Ответы на вопрос(1)

Ваш ответ на вопрос