Programing

Java의 어떤 작업이 원 자성으로 간주됩니까?

crosscheck 2020. 10. 15. 07:31
반응형

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

반응형