AtomicMarkableReference — 마크 비트가 있는 원자 객체 참조

AtomicMarkableReference — 마크 비트가 있는 원자 객체 참조

마크 비트(mark bit)와 함께 객체 참조를 유지하며, 둘 다 원자적으로 갱신할 수 있는 클래스예요.

출처: Java API Reference

본문

시그니처

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과 같을 수 있는 약한 원자적 설정이에요.

더 알아보기 (Learn more)