[Java] Volatile
·
Java
들어가기 전Volatile은 성능을 포기하고 변경된 값을 정확히 본다 생각하면 된다.CPU에서는 일반적으로 효율적인 처리를 하기 위해 캐시 메모리에 값을 불러오고, CPU는 캐시메모리에 있는 값을 사용한다.다음 문제를 한 번 보자public class VolatileFlagMain { public static void main(String[] args) { MyTask task = new MyTask(); Thread t = new Thread(task, "work"); log("runFlag = " + task.runFlag); t.start(); sleep(1000); log("runFlag를 false로 변경 시도")..
[Java] Thread Join
·
Java
들어가기 전Join이란 뭘까?여러 개념에서의 Join이 있을 수 있겠지만 이번 글은 Thread 개념에서의 Join이다.Join에 대해 설명하기 전 다음 쓰레드 생명주기에 대해서 한 번 보고 가면 좋을 것 같다.당연한 말이겠지만, 멀티스레드를 구현하지 않는다면 Blocked, Waiting, Timed Waiting을 경험 할 수 없을 것이다.위의 3가지 상태의 경우는 멀티스레드를 통해 한 쓰레드가 동작중이고 그 과정에서 대기, 차단 등을 하는 과정이니.. Join ?Join의 역할은 아래의 사진과 같이 여러개의 스레드가 존재 할 때, 특정 스레드가 끝날 때 까지 다른 스레드를 대기하게 하는 역할을 한다이러한 역할을 고려할 때 Join은  세가지 상태중 Wating(대기)에 해당되며, Join을 호출 했..