자바 병렬 프로 그래 밍: 스 레 드 안전 관리 클래스 - 원자 작업 클래스 - AtomicInteger FieldUpdater

5668 단어
1. 클래스 AtomicIntegerFieldUpdater < T >
  public abstract class AtomicIntegerFieldUpdater<T> extends Object

    반 사 된 유 틸 리 티 도 구 를 기반 으로 지정 한 클래스 의 지정 volatile int 필드 를 원자 업데이트 할 수 있 습 니 다.이 는 원자 데이터 구조 에 사용 되 며, 이 구조 에서 같은 노드 의 몇 필드 는 원자 업데이트 에 의 해 독립 적 으로 제어 된다.
    이러한 중 compareAndSet 방법의 보증 은 다른 원자 류 에서 이 방법의 보증 보다 약 하 다 는 것 을 주의 하 세 요.이 는 모든 필드 가 원자 접근 목적 에 적합 하도록 확보 할 수 없 기 때문에 같은 업데이트 기 compareAndSetset 의 다른 호출 에 대해 서 는 원자 성과 가 변 적 인 의미 만 보장 할 수 있다.
2. 구조 함수 상세 설명
AtomicIntegerFieldUpdater
protected AtomicIntegerFieldUpdater()

보 호 된 무 조작 구조 방법 으로 하위 클래스 에 사용 할 수 있 습 니 다.
 
3. 방법 상세 설명
newUpdater
public static <U> AtomicIntegerFieldUpdater<U> newUpdater(Class<U> tclass,
                                                          String fieldName)

주어진 필드 를 대상 으로 업데이트 기 를 만 들 고 되 돌려 줍 니 다.반사 형식 이 일반 형식 과 일치 하 는 지 확인 하려 면 Class 매개 변수 가 필요 합 니 다.
 
인자:tclass - 필드 유지 대상 클래스fieldName - 업데이트 할 필드 이름
돌아 가기:
갱신 기
던 지기:IllegalArgumentException - 이 필드 가 가 변 적 인 정수 형식 이 아니라면RuntimeException - 이 클래스 가 필드 를 유지 하지 않 거나 잘못된 유형 이 라면 Runtime Exception 과 포 함 된 반사 기반 이상 을 던 집 니 다.
compareAndSet
public abstract boolean compareAndSet(T obj,
                                      int expect,
                                      int update)

하면, 만약, 만약...== 예상 치 는 원자 방식 으로 이 업데이트 기 가 관리 하 는 주어진 대상 의 필드 값 을 주어진 업데이트 값 으로 설정 합 니 다.맞다.compareAndSetset 의 다른 호출 은 원자 성 을 확보 할 수 있 으 나 필드 의 다른 변경 에 대해 서 는 반드시 원자 성 을 확보 하 는 것 은 아니다.
 
인자:obj - 필드 의 대상 을 조건 부 로 설정expect - 예상 치update - 새 값
돌아 가기:
성공 하면 true 로 돌아 갑 니 다.
던 지기:
하면, 만약, 만약...ClassCastException 클래스 의 인 스 턴 스 가 아 닙 니 다. (이러한 처리 가 구조 방법 에서 만들어 진 필드)
weakCompareAndSet
public abstract boolean weakCompareAndSet(T obj,
                                          int expect,
                                          int update)

하면, 만약, 만약...obj 예상 치 는 원자 방식 으로 이 업데이트 기 가 관리 하 는 주어진 대상 의 필드 값 을 주어진 업데이트 값 으로 설정 합 니 다.맞다.==compareAndSet 의 다른 호출 은 원자 성 을 확보 할 수 있 으 나 필드 의 다른 변경 에 대해 서 는 원자 성 을 확보 하지 못 하고 의외 의 실 패 를 할 수 있 습 니 다.
예상 치 못 하 게 실패 하고 정렬 보증 을 제공 하지 않 을 수 있 으 므 로 아주 적은 경우 에 만 set 을 적 절 히 선택 할 수 있 습 니 다.
 
인자:compareAndSet - 필드 의 대상 을 조건 부 로 설정obj - 예상 치expect - 새 값
돌아 가기:
성공 하면 true 로 돌아 갑 니 다.
던 지기:
하면, 만약, 만약...update 클래스 의 인 스 턴 스 가 아 닙 니 다. (이러한 처리 가 구조 방법 에서 만들어 진 필드)
set
public abstract void set(T obj,
                         int newValue)

이 업데이트 기 가 관리 하 는 주어진 대상 의 필드 를 주어진 업데이트 값 으로 설정 합 니 다.... 에 대하 여ClassCastException 의 후속 호출 은 가 변 저장 소 를 확보 할 수 있 습 니 다.
 
인자:obj - 필드 의 대상 을 설정 합 니 다.compareAndSet - 새 값
lazySet
public abstract void lazySet(T obj,
                             int newValue)

마지막 으로 이 업데이트 기 가 관리 하 는 주어진 대상 의 필드 를 주어진 업데이트 값 으로 설정 합 니 다.
 
인자:obj - 필드 의 대상 을 설정 합 니 다.newValue - 새 값
다음 버 전부터:
1.6
get
public abstract int get(T obj)

이 업데이트 기 가 관리 하 는 주어진 대상 의 필드 에 있 는 현재 값 을 가 져 옵 니 다.
 
인자:obj - 필드 의 대상 가 져 오기
돌아 가기:
현재 값
getAndSet
public int getAndSet(T obj,
                     int newValue)

원자 방식 으로 이 업데이트 기 가 관리 하 는 주어진 대상 의 필드 를 주어진 값 으로 설정 하고 이전 값 을 되 돌려 줍 니 다.
 
인자:newValue - 필드 의 대상 을 가 져 오고 설정 합 니 다.obj - 새 값
돌아 가기:
이전 값
getAndIncrement
public int getAndIncrement(T obj)

이 업데이트 기 가 관리 하 는 주어진 대상 의 현재 값 을 원자 방식 으로 1 을 추가 합 니 다.
 
인자:obj - 필드 의 대상 을 가 져 오고 설정 합 니 다.
돌아 가기:
이전 값
getAndDecrement
public int getAndDecrement(T obj)

이 업데이트 기 가 관리 하 는 주어진 대상 의 현재 값 을 원자 방식 으로 1 로 줄 입 니 다.
 
인자:newValue - 필드 의 대상 을 가 져 오고 설정 합 니 다.
돌아 가기:
이전 값
getAndAdd
public int getAndAdd(T obj,
                     int delta)

이 업데이트 기 가 관리 하 는 주어진 대상 의 현재 값 을 원자 방식 으로 추가 합 니 다.
 
인자:obj - 필드 의 대상 을 가 져 오고 설정 합 니 다.obj - 더 해 야 할 값.
돌아 가기:
이전 값
incrementAndGet
public int incrementAndGet(T obj)

이 업데이트 기 가 관리 하 는 주어진 대상 필드 의 현재 값 을 원자 방식 으로 1 을 추가 합 니 다.
 
인자:obj - 필드 의 대상 을 가 져 오고 설정 합 니 다.
돌아 가기:
업데이트 값
decrementAndGet
public int decrementAndGet(T obj)

이 업데이트 기 가 관리 하 는 주어진 대상 필드 의 현재 값 을 원자 방식 으로 1 로 줄 입 니 다.
 
인자:delta - 필드 의 대상 을 가 져 오고 설정 합 니 다.
돌아 가기:
업데이트 값
addAndGet
public int addAndGet(T obj,
                     int delta)

이 업데이트 기 가 관리 하 는 주어진 대상 의 필드 현재 값 을 원자 방식 으로 추가 합 니 다.
 
인자:obj - 필드 의 대상 을 가 져 오고 설정 합 니 다.obj - 더 해 야 할 값.
돌아 가기:
업데이트 값

좋은 웹페이지 즐겨찾기