자바 의 잘 알려 지지 않 은 키워드 volatile 에 대한 상세 한 분석
자바 에 서 는 자바 에서 volatile 키워드 가 매우 중요 하 다.
본 고 는 volatile 키 워드 를 전면적으로&상세 하 게 해석 하 였 으 니,당신들 이 좋아 하 시 기 를 바 랍 니 다.
목차
1.정의
자바 의 키워드/수정자
2.역할
volatile 에 의 해 수 식 된 공유 변수의 가시 성&질서 성 을 확보 하지만 원자 성 을 보장 하지 않 습 니 다.
3.구체 적 인 묘사
다음은 volatile 이'공유 변수의 가시 성&질서 성 을 어떻게 보장 하지만 원자 성 을 보장 하지 않 는 다'는 구체 적 인 원 리 를 상세히 설명 하 겠 습 니 다.
예비 지식:원자 성,가시 성&질서 성
3.1 가시 성 확보
구체 적 묘사
volatile 수식 속성 은 읽 을 때마다 최신 값 을 읽 을 수 있 도록 합 니 다.
읽 은 값 을 업데이트 할 수 없습니다.
의 원리
스 레 드 A 가 작업 메모리 에서 수정 한 공유 속성 값 은 바로 메 인 메모리 로 갱 신 됩 니 다.스 레 드 B/C/D 는 매번 읽 기 쓰기 울 타 리 를 통 해 메 인 메모리 에서 속성 값 을 직접 읽 는 것 과 유사 합 니 다.
다만 유사 하 다.인터넷 에 서 는 volatile 수식 변수 읽 기와 쓰기 가 메 인 저장 소 에서 직접 작 동 한 다 는 주장 은 옳지 않 고 유사 한 행 위 를 보일 뿐이다.
읽 기와 쓰기 울 타 리 는 CPU 명령 입 니 다.읽 기와 쓰기 울 타 리 를 삽입 합 니 다=CPU&컴 파 일 러 가 이 명령 보다 먼저 실행 되 어야 함 을 알려 줍 니 다.나중에 이 명령 을 실행 해 야 합 니 다.(질서 성)
읽 기와 쓰기 울 타 리 는 다른 CPU 캐 시 를 강제로 업데이트 하 는 역할 을 합 니 다.예 를 들 어,쓰기 울 타 리 는 이 울타리 앞 에 기 록 된 데 이 터 를 캐 시 로 새로 고침 하여 가시 성 을 확보 합 니 다.
3.2 질서 성 확보
구체 적 묘사
volatile 수식 의 속성 을 읽 기/쓰기 작업 을 할 때 앞의 코드 는 반드시 완성 되 어야 합 니 다&결 과 는 후속 작업 을 볼 수 있 습 니 다.
의 원리
정렬 을 다시 할 때 volatile 로 속성 을 수식 하 는 읽 기/쓰기 작업 코드 행 위 는 경계선 을 나 누고 읽 기/쓰기 작업 앞의 코드 는 뒤로 정렬 할 수 없 으 며 뒤의 동 리 는 앞으로 정렬 할 수 없습니다.이로써 질서 성 을 확보 하 다
3.3 원자 성 을 보장 하지 않 음
구체 적 묘사
volatile 수식 속성 이 수정 전에 값 을 읽 었 다 면 수정 후 작업 메모리 에 복 사 된 값 을 변경 할 수 없습니다.
병발 을 막 을 수 없 는 상황 이다.
의 원리
// a volatile
volatile static int a=0;
a++;
// 2 :1 = a、2= a+1 & a+1 a
// : A、B , A 1 、 B a++, a 1
// A 0, A a = 0, a++ a = 1
// a++ 2 , 2 0 1, a 1
4.응용 장면volatile 은 가시 성과 질서 성 을 확보 하기 때문에 volatile 에 의 해 수 정 된 공유 속성 은 일반적으로 동시 읽 기/쓰기 에 문제 가 없 으 며 경량급 synchronized 실현 이 라 고 볼 수 있 습 니 다.
synchronized 에 대한 설명 은 구체 적 으로 글 을 보십시오자바:이것 은 전면적 이 고 상세 한 Synchronized 키워드 학습 지침 입 니 다.
이로써 자바 의 volatile 키워드 에 대한 설명 이 완료 되 었 습 니 다.
5.총화
본 고 는 주로 자바 에서 volatile 키 워드 를 설 명 했 는데 그 역할 은'공유 변수의 가시 성&질서 성 을 확보 하 는 것 이다.구체 적 으로 다음 과 같이 요약 한다.
자바 의 잘 알려 지지 않 은 키워드 volatile 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.자바 키워드 volatile 에 관 한 더 많은 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.