>  Q&A  >  본문

java - 휘발성이 스레드 공유 데이터 보안 문제를 해결할 수 있습니까?

예를 들어 싱글톤 패턴을 작성하려면 동기화된 동기화 방법을 사용하지 않고 휘발성 수정을 사용합니다.

비공개 Sigleton(){
}

개인 정적 휘발성 Sigleton s = null;

public static Sigleton getInstance(){

으아악

}

이렇게 하면 스레드 안전 문제가 해결될 수 있나요?

스레드 가시성을 이해하는 방법

s==null이면 두 개의 스레드가 동시에 들어오면 결국 두 개의 새로운 sigleton 객체가 생성되지 않나요?

欧阳克欧阳克2674일 전945

모든 응답(2)나는 대답할 것이다

  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-06-23 09:16:04

    new의 오버헤드가 매우 작다면 이렇게 작성해도 전혀 괜찮습니다. 하지만 초기화 오버헤드가 높으면 여전히 동기화를 사용해야 합니다. 일반적인 이중 확인 잠금은 다음과 같이 작성됩니다.

    으아악

    회신하다
    0
  • 代言

    代言2017-06-23 09:16:04

    스레드 가시성을 이해하는 방법

    먼저 메모리 모델을 이해하세요.

    스레드는 메인 메모리의 변수를 직접 수정하지 않고 자신의 작업 메모리를 먼저 작성한 다음 이를 메인 메모리에 동기화합니다. 동기화되지 않은 경우 다른 스레드는 수정 사항을 볼 수 없습니다. 작업 메모리 캐시).

    회신하다
    0
  • 취소회신하다