AtomicIntegerFieldUpdater — int 필드 원자 갱신 리플렉션 유틸리티

AtomicIntegerFieldUpdater — int 필드 원자 갱신 리플렉션 유틸리티

지정한 클래스의 지정된 volatile int 필드에 원자적 갱신을 가능하게 하는 리플렉션 기반 유틸리티예요.

출처: Java API Reference

본문

시그니처

public abstract class AtomicIntegerFieldUpdater<T> extends Object

타입 매개변수: T — 갱신 가능한 필드를 보유한 객체의 타입.

설명

지정한 클래스의 지정된 volatile int 필드에 원자적 갱신을 가능하게 하는 리플렉션 기반 유틸리티예요. 이 클래스는 같은 노드의 여러 필드가 각각 독립적으로 원자적 갱신 대상이 되는 원자 데이터 구조에서 사용하도록 설계되었어요.

참고로 이 클래스의 compareAndSet 메서드의 보장은 다른 원자 클래스의 것보다 약해요. 이 클래스는 필드의 모든 사용이 원자 접근 목적에 적절함을 보장할 수 없으므로, 같은 updater에서 compareAndSetset의 다른 호출에 대해서만 원자성을 보장할 수 있어요.

타입 T의 매개변수에 대해 newUpdater(java.lang.Class<U>, java.lang.String)에 전달된 클래스의 인스턴스가 아닌 객체 인자를 전달하면 ClassCastException이 던져져요.

저장 조건: 새 updater를 생성한 클래스의 필드는 volatile로 선언되어야 하고, 접근(access) 검사가 필드의 선언 클래스가 아닌 updater의 생성자에서 확인되므로 updater는 그 필드를 읽고 쓸 수 있어야 해요.

주요 메서드

  • newUpdater(Class<U> tclass, String fieldName)tclassfieldName과 일치하는 필드를 가진 updater를 만들고 반환해요.
  • get(T obj) — 지정한 객체의 이 updater가 관리하는 필드의 현재 값을 반환해요.
  • set(T obj, int newValue) — 지정한 객체의 이 updater가 관리하는 필드를 지정한 값으로 설정해요.
  • getAndSet(T obj, int newValue) — 지정한 객체의 이 updater가 관리하는 필드를 지정한 값으로 원자적으로 설정하고 이전 값을 반환해요.
  • compareAndSet(T obj, int expectedValue, int newValue) — 현재 값이 expectedValue와 같으면 지정한 객체의 필드를 newValue로 원자적으로 설정해요.
  • getAndAdd(T obj, int delta) — 지정한 객체의 이 updater가 관리하는 필드의 현재 값에 지정한 값을 원자적으로 더하고 이전 값을 반환해요.
  • addAndGet(T obj, int delta) — 지정한 객체의 이 updater가 관리하는 필드의 현재 값에 지정한 값을 원자적으로 더하고 갱신된 값을 반환해요.
  • accumulateAndGet(T obj, int x, IntBinaryOperator accumulatorFunction) — 현재 값과 주어진 값에 주어진 함수를 적용한 결과로 필드를 원자적으로 갱신하고 갱신된 값을 반환해요.

더 알아보기 (Learn more)