У меня немного уникальная ситуация. Я бы хотел использовать функцию compareAndSet()
AtomicReference
, но с небольшим количеством поворота.Использование сравнения и набора против нескольких ожидаемых значений с помощью AtomicReference
Обычно вы используете compareAndSet()
для сравнения с одним ожидаемым значением, прежде чем вы его действительно измените. В моем случае ожидаемое значение для сравнения может быть одним из многих значений.
Есть ли способ сделать это, используя AtomicReference
? Если нет, какие другие методы я должен использовать? Возможно, просто традиционное использование synchronized
?
Для сравнения и замены требуется аппаратная поддержка, поэтому я не думаю, что вы можете связать их вместе, чтобы получить нужное поведение. 'synchronized', вероятно, безопаснее. Тем не менее, посмотрите «заблокированный список свободных ссылок», можно спроектировать вокруг проблемы, но это чертовски сложный. – markspace