자바 병렬 프로 그래 밍: 스 레 드 안전 관리 클래스 - 원자 작업 클래스 - AtomicInteger FieldUpdater
public abstract class AtomicIntegerFieldUpdater<T> extends Object
반 사 된 유 틸 리 티 도 구 를 기반 으로 지정 한 클래스 의 지정
volatile int
필드 를 원자 업데이트 할 수 있 습 니 다.이 는 원자 데이터 구조 에 사용 되 며, 이 구조 에서 같은 노드 의 몇 필드 는 원자 업데이트 에 의 해 독립 적 으로 제어 된다.이러한 중
compareAndSet
방법의 보증 은 다른 원자 류 에서 이 방법의 보증 보다 약 하 다 는 것 을 주의 하 세 요.이 는 모든 필드 가 원자 접근 목적 에 적합 하도록 확보 할 수 없 기 때문에 같은 업데이트 기 compareAndSet
와 set
의 다른 호출 에 대해 서 는 원자 성과 가 변 적 인 의미 만 보장 할 수 있다.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)
하면, 만약, 만약...
==
예상 치 는 원자 방식 으로 이 업데이트 기 가 관리 하 는 주어진 대상 의 필드 값 을 주어진 업데이트 값 으로 설정 합 니 다.맞다.compareAndSet
와set
의 다른 호출 은 원자 성 을 확보 할 수 있 으 나 필드 의 다른 변경 에 대해 서 는 반드시 원자 성 을 확보 하 는 것 은 아니다.인자:
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
- 더 해 야 할 값.돌아 가기:
업데이트 값
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.