반응형
Java의 어떤 작업이 원 자성으로 간주됩니까?
Java의 어떤 작업이 원 자성으로 간주됩니까?
- long 및 double을 제외한 모든 기본 유형 할당
- 모든 참조 할당
- 휘발성 변수의 모든 할당
- java.concurrent.Atomic * 클래스의 모든 작업
그리고 어쩌면 더. jls를 보세요 .
주석에서 언급했듯이 원자 성은 가시성을 의미하지 않습니다. 따라서 다른 스레드는 부분적으로 작성된을 보지 않도록 보장되지만 int
새 값을 보지 못할 수 있습니다.
long 및 double에 대한 작업은 일반적인 64 비트 CPU 원자 적에서도 수행 되지만 보장은 없습니다. 이 기능 요청을 참조하십시오 .
Java에서는 32 비트 이하의 읽기 및 쓰기가 원자 적으로 보장됩니다.
원 자성이란 각 작업이 한 단계에서 발생하며 중단 될 수 없음을 의미합니다. 따라서 다중 스레드 응용 프로그램이있는 경우 읽기 및 쓰기 작업은 스레드로부터 안전하며 동기화 할 필요가 없습니다.
예를 들어 다음 코드는 스레드로부터 안전합니다.
public class ThreadSafe
{
private int x;
public void setX(int x)
{
this.x = x;
}
}
것 같다 갈망의 할당이 AtomicLong.java에서이 방법에 따라, 원자 것을 :
public final void set(long newValue) {
value = newValue;
}
동기화가 없습니다.
참고 URL : https://stackoverflow.com/questions/4756536/what-operations-in-java-are-considered-atomic
반응형
'Programing' 카테고리의 다른 글
Go에서 구조체의 필드를 반복합니다. (0) | 2020.10.15 |
---|---|
성찰이 아니라 성찰을 성찰이라고 부르는 이유는 무엇입니까? (0) | 2020.10.15 |
Xcode 4를 사용한 iPhone Ad Hoc 빌드 (0) | 2020.10.15 |
정수 <-> 포인터 캐스트가 실제로 올바른 때는 언제입니까? (0) | 2020.10.15 |
동기 코드를 비동기 호출로 래핑 (0) | 2020.10.15 |