AtomicMarkableReference — 마크 비트가 있는 원자 객체 참조
AtomicMarkableReference — 마크 비트가 있는 원자 객체 참조
마크 비트(mark bit)와 함께 객체 참조를 유지하며, 둘 다 원자적으로 갱신할 수 있는 클래스예요.
본문
시그니처
public class AtomicMarkableReference<V> extends Object
타입 매개변수: V — 이 참조가 가리키는 객체의 타입.
설명
AtomicMarkableReference는 객체 참조와 마크 비트를 함께 유지하며, 원자적으로 갱신할 수 있어요. 구현 참고: 이 구현은 "박스된(박싱된)" [reference, boolean] 쌍을 나타내는 내부 객체를 만들어 마크 가능한 참조를 유지해요.
이 클래스는 AtomicReference에 참조가 '표시된(marked)' 상태인지 여부를 추적하기 위한 별도의 불리언 비트를 추가한 것과 같아요. 예를 들어 연결 리스트에서 노드가 삭제되었는지 표시하는 데 사용할 수 있어요. compareAndSet은 참조와 마크가 모두 기대값과 같을 때만 갱신을 수행해요.
주요 메서드
getReference()— 참조의 현재 값을 반환해요.isMarked()— 마크의 현재 값을 반환해요.get(boolean[] markHolder)— 참조와 마크의 현재 값을 모두 반환해요.set(V newReference, boolean newMark)— 참조와 마크를 주어진 갱신 값으로 무조건 설정해요.compareAndSet(V expectedReference, V newReference, boolean expectedMark, boolean newMark)— 현재 참조가 기대 참조와 같고 현재 마크가 기대 마크와 같으면 참조와 마크를 모두 주어진 갱신 값으로 원자적으로 설정해요.attemptMark(V expectedReference, boolean newMark)— 현재 참조가 기대 참조와 같으면 마크의 값을 주어진 갱신 값으로 원자적으로 설정해요.weakCompareAndSet(V expectedReference, V newReference, boolean expectedMark, boolean newMark)—compareAndSet과 같을 수 있는 약한 원자적 설정이에요.