프로그래밍 언어/JAVA

volatile 키워드는 어디에 사용할 수 있을까?

Rateye 2021. 10. 1. 12:19
728x90
반응형
질문 : volatile 키워드는 무엇에 유용합니까?

오늘 직장 volatile 키워드를 발견했습니다. 익숙하지 않아서이 설명을 찾았습니다.

해당 기사에서 문제의 키워드를 설명하는 세부 정보를 고려할 때 해당 키워드를 사용한 적이 있습니까? 아니면이 키워드를 올바른 방식으로 사용할 수있는 사례를 볼 수 있습니까?

답변

volatile 에는 메모리 가시성을위한 의미가 있습니다. volatile 필드의 값은 쓰기 작업이 완료된 후 모든 판독기 (특히 다른 스레드)에게 표시됩니다. volatile 없으면 독자는 업데이트되지 않은 일부 값을 볼 수 있습니다.

귀하의 질문에 답하기 위해 : 예, 일부 코드가 루프를 계속할지 여부를 제어 volatile 루프는 volatile 값을 true 계속됩니다. 조건은 "중지"메소드를 호출 false 으로 설정할 수 있습니다. 루프는 false 보고 stop 메서드가 실행을 완료 한 후 값을 테스트 할 때 종료됩니다.

필자가 강력히 추천하는 "Java Concurrency in Practice "라는 책 volatile 대한 좋은 설명을 제공합니다. 이 책은 질문에서 언급 된 IBM 기사를 작성한 동일한 사람이 작성했습니다 (사실 그는 해당 기사의 맨 아래에 자신의 책을 인용합니다). volatile 사용은 그의 기사에서 "패턴 1 상태 플래그"라고 부르는 것입니다.

volatile 이 어떻게 작동하는지 자세히 알아 보려면 Java 메모리 모델을 읽어보십시오. 그 수준을 넘어서고 싶다면 Hennessy & Patterson 과 같은 좋은 컴퓨터 아키텍처 책을 확인하고 캐시 일관성 및 캐시 일관성에 대해 읽어보십시오.

출처 : https://stackoverflow.com/questions/106591/what-is-the-volatile-keyword-useful-for
728x90
반응형