나는이 개념을 정확하게 이해하고 싶습니다. 설명/확인은 많은 도움이 될 것이고 나는 다른 많은 프로그래머들도 확신 할 것이다. 그래서 여기에 이러한 개념의 나의 이해, 내 조사의 결과입니다 : 여러 스레드 사이에 변수를 공유하고자 할 때volatile, syncronized 및 AtomicReference와 같은 개념을 올바르게 이해 했습니까?
휘발성이 사용됩니다. a) (스레드간에 공유되는) 변수를 volatile로 선언하고 그렇지 않음을 선언하는 차이점은 무엇입니까? b) 다른 스레드에서 액세스 할 때 항상 volatile로 선언해야합니까? c) 휘발성 변수를 동기화하는 것이 맞습니까?
AtomicReference는 객체를 래핑하고 그 위에 원자 단위 연산을 제공하는 클래스입니다 (compareAndSet, lazySet 및 weakCompareAndSet). 이것은 모두, 동기화가 없으며 아무것도 아닙니다. a) AtomicReference를 volatile로 선언하는 것이 합리적입니까? b)하지만 AtomicReference.get이 동기화되지 않았거나 설정되지 않았습니까?
동기화 란 여러 스레드간에 공유되는 변수에 순차적으로 액세스하는 것을 의미합니다. 인스턴스별로 또는 클래스별로 수행 할 수 있습니다. 동기화는 메소드 헤더 나 코드 블록에 추가 될 수 있습니다. 여기에 어떤 신비 나는 :)
감사합니다, Aurelian에
가능한 복제본 : http://stackoverflow.com/questions/9749746/what-is-the-difference-of-atomic-volatile-synchronize?rq=1 – dantuch