김영한의 실전 자바 - 고급 1편(volatile, synchronized, LockSupport, ReentrantLock)
·
김영한의 실전 자바 - 고급 1편
메모리 가시성main 스레드에서 생성한 myThread의 runFlag의 값을 mainThread에서 true에서 false로 바꿀 경우 이 값이 work 스레드에 바로 반영이 되지 않는 이유를 설명하시오각 스레드는 메인 메모리에 있는 값을 자신의 코어의 캐시 메모리에 가져와서 사용하는 방식임.이때, 값 변경이 일어나는 경우 메인 메모리에 값을 변경하는 것이 아닌 자신의 캐시 메모리에만 값을 변경함.따라서, runFlag의 값이 main thread에서 false로 바뀌더라도 이는 메인 메모리에 적용되지 않고 work thread도 이 사실을 알 수 없음.이 값은 언제 바뀔지 알 수 없으며 환경에 따라서 결과는 달라지게 됨.sleep과 같이 스레드가 쉬거나 콘텍스트 스위칭이 되면서 주로 갱신됨.   vo..