synchronized 가 가시 성 을 보장 할 수 있 는 지 여부 입 니 다.
1243 단어 자바synchronized가시 성다 중 스 레 드
코드 는 다음 과 같 습 니 다:
코드 의 실행 결 과 는 '리 셋 되 었 습 니 다' 라 는 말의 출력 을 영원히 볼 수 없습니다.즉, 뒤의 t1 스 레 드 max = null 의 결 과 는 위의 thread [i] 의 모든 스 레 드 를 볼 수 없다.
다시 참조 문장:http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html#incorrectlySync
synchronized 는 같은 모니터 에 들 어 가 는 스 레 드 에 대한 가시 성 을 보장 합 니 다.예 를 들 어 스 레 드 th1 은 변 수 를 수정 하고 모니터 를 종료 하기 전에 변 수 를 v1 로 새로 고 친 메 인 메모리 에 있 습 니 다.스 레 드 t2 가 이 모니터 에 들 어 갔 을 때 어떤 프로세서 가 변수 v1 을 캐 시 했다 면 먼저 캐 시가 효력 을 잃 은 다음 에 메 인 메모리 에 변수 v1 을 다시 불 러 와 야 합 니 다. (이 점 은 volatile 과 비슷 합 니 다.)여기 서 의미 의 해석 은 같은 모니터 에 대해 변수의 가시 성 은 일정한 방식 으로 찾 을 수 있 고 같은 모니터 가 아니면 보장 되 지 않 는 다 는 것 이다.
본 논문 의 코드 예 시 는 같은 모니터 의 조건 에 부합 되 지 않 기 때문에 이것 이 있 으 면 보이 지 않 는 것 도 정상 이다.
테스트 플랫폼:
os x 10.10.2
cpu i5
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.