AtomicLongFieldUpdater — long 필드 원자 갱신 리플렉션 유틸리티
AtomicLongFieldUpdater — long 필드 원자 갱신 리플렉션 유틸리티
지정한 클래스의 지정된 volatile long 필드에 원자적 갱신을 가능하게 하는 리플렉션 기반 유틸리티예요.
본문
시그니처
public abstract class AtomicLongFieldUpdater<T> extends Object
타입 매개변수: T — 갱신 가능한 필드를 보유한 객체의 타입.
설명
지정한 클래스의 지정된 volatile long 필드에 원자적 갱신을 가능하게 하는 리플렉션 기반 유틸리티예요. 이 클래스는 같은 노드의 여러 필드가 각각 독립적으로 원자적 갱신 대상이 되는 원자 데이터 구조에서 사용하도록 설계되었어요.
참고로 이 클래스의 compareAndSet 메서드의 보장은 다른 원자 클래스의 것보다 약해요. 이 클래스는 필드의 모든 사용이 원자 접근 목적에 적절함을 보장할 수 없으므로, 같은 updater에서 compareAndSet과 set의 다른 호출에 대해서만 원자성을 보장할 수 있어요.
타입 T의 매개변수에 대해 newUpdater(java.lang.Class<U>, java.lang.String)에 전달된 클래스의 인스턴스가 아닌 객체 인자를 전달하면 ClassCastException이 던져져요.
저장 조건: 새 updater를 생성한 클래스의 필드는 volatile로 선언되어야 하고, 접근 검사가 updater의 생성자에서 확인되므로 updater는 그 필드를 읽고 쓸 수 있어야 해요.
주요 메서드
newUpdater(Class<U> tclass, String fieldName)—tclass의fieldName과 일치하는 필드를 가진 updater를 만들고 반환해요.get(T obj)— 지정한 객체의 이 updater가 관리하는 필드의 현재 값을 반환해요.set(T obj, long newValue)— 지정한 객체의 이 updater가 관리하는 필드를 지정한 값으로 설정해요.getAndSet(T obj, long newValue)— 지정한 객체의 이 updater가 관리하는 필드를 지정한 값으로 원자적으로 설정하고 이전 값을 반환해요.compareAndSet(T obj, long expectedValue, long newValue)— 현재 값이expectedValue와 같으면 지정한 객체의 필드를newValue로 원자적으로 설정해요.getAndAdd(T obj, long delta)— 지정한 객체의 이 updater가 관리하는 필드의 현재 값에 지정한 값을 원자적으로 더하고 이전 값을 반환해요.addAndGet(T obj, long delta)— 지정한 객체의 이 updater가 관리하는 필드의 현재 값에 지정한 값을 원자적으로 더하고 갱신된 값을 반환해요.