java | January 08, 2022
만약 2개의 threads(t1, t2)가 같은 object에 접근해서 static으로 선언된 변수를 update 한다고 하자.
이때 t1과 t2는 static 변수들을 포함하여 해당 object에 대한 local copy를 각자의 cache에 저장한다.
따라서 t1의 local cache에서 static 변수를 변경하면, t2 cache의 static 변수에는 반영되지 않는다.
한 object의 변경이, 같은 class의 다른 objects에 적용되는 context of Object에서 사용된다.
그러나, 한 thread의 static 변수 변경이 즉시 다른 threads에도 적용되는 context of Thread에서는 사용되지 않는다.
만약 2개의 threads(t1, t2)가 같은 object에 접근해서 volatile로 선언된 변수를 update 한다고 하자.
이때 t1과 t2는 volatile 변수들은 제외하고 해당 object에 대한 각자의 local cache를 만든다.