메모리 가시성 (Memory Visibility) 스레드를 선언할 때 공유변수를 volatile 으로 선언하는 이유를 알아보았다. 쓰레드와 메인쓰레드는 효율을 위해서 캐시에 변수의 값을 집어넣고 프로세스를 진행한다.즉. Main Thread에서 기존 쓰레드의 공유변수의 상태값을 바꾼다해도 캐시의 값이 바뀌기 때문에 쓰레드는 그 값의 변화를 인지하지 못한다는 것이다. private Boolean flag;를 쓰레드안에 선언해놓고 MainMethod에서flag = "false";를 선언한다고 해도 바로 실행중인 멀티 스레드에서 인지하지 못한다는 뜻이다.이것이 메모리의 가시성이다. 이유위에 언급한 것 처럼, MainThread 와 Multi Trhead모두 변수의 값을 캐시에 불러와서 그 값을 지속적으로 읽기..