내 프로그램 중 하나에서 Atomic Integer의 값을 업데이트하려고했지만
set()
를 결정할 수 없었습니다.
그리고
getAndSet()
두 가지가 모두 같은 것처럼 보이기 때문에 이미 이 와 이 게시물이지만
set
를 비교하고 있습니다
그리고
compareAndSet
(스레드에 예상 값이 없으면 제공된 값 설정을 포기합니다) 반면
set
를 비교하고 싶습니다.
setAndGet
와 함께
(제공된 값을 설정 한 후에 만 반환).
//Sets the newValue to the volatile member value
public final void set(int newValue) {
value = newValue;
}
그리고
public final int getAndSet(int newValue) {
return unsafe.getAndSetInt(this, valueOffset, newValue);
}
//Doesn't give up until it sets the updated value. So eventually overwrites the latest value.
public final int getAndSetInt(Object paramObject, long paramLong, int paramInt) {
int i;
do {
i = getIntVolatile(paramObject, paramLong);
} while (!compareAndSwapInt(paramObject, paramLong, i, paramInt));
return i;
}
두 방법의 주요 차이점을 찾을 수 없습니다.
왜 와이즈 비츠 우리가
set()
때 .getAndSet()
가 반환 한 값을 사용하지 않도록 선택할 수 있습니다 .언제나 이러한 방법을 각각 사용해야합니까?
getAndSet()
-
답변 # 1
관련 자료
- c - SIOCSIFFLAGS에서 setsockopt와 ioctl의 차이점은 무엇입니까?
- c - O1과 Os의 차이점은 무엇입니까?
- asp.net - "면도기"와"cshtml"파일의 차이점은 무엇입니까
- mercurial - hg revert --all과 hg up -c의 차이점은 무엇입니까?
- kotlin - 멤버 함수와 속성의 차이점
- c++ - 동적 배열 (GCC)과 포인터의 차이점
- types - Java에서 LongvalueOf (0)과 0L의 차이점은 무엇입니까?
- c# - 날짜 시간과 nullable 날짜 시간의 날짜 차이를 얻으려면
- Powershell을 사용하는 두 csv 파일의 차이점
- excel - 셀에 날짜 형식의 날짜가 포함 된 시간 간의 차이를 계산하는 방법은 무엇입니까? 조건도 있습니다
- c# - 생성자와 기본 메소드의 차이점은 무엇입니까?
- pytorch - modeltraining = False와 modelparamrequire_grad = False의 차이점은 무엇입니까?
- linux - / proc/self와/proc/$$의 차이점은 무엇입니까?
- javascript - 오늘과 다음 금요일의 시간 차이를 얻는 방법
- Hyperledger Fabric에서 보증 정책의 "Org1MSPmember", "Org1MSPpeer", "Org1MSPadmin", "Org1MSPclient&qu
- tensorflow - TF 20 Alpha와 TF 야간 미리보기의 차이점은 무엇입니까?
- access vba - 다른 열에 일치하는 데이터가있는 경우 두 날짜의 차이를 계산할 수 있습니까? MTBF 계산
- functional programming - 라이터 모나드와리스트 라이터 모나드의 차이점
- python - 팬더 데이터 프레임에서 동일한 고객에 대한 행과 이전/다음 행의 시간 차이
자바 문서에 따르면 둘 다 다른 일을한다 :
AtomicReference#getAndSet
내부 값을 전달한 값으로 설정하지만 이전 값을 반환합니다.AtomicReference#set
내부 가치를 설정합니다. void를 반환합니다.