1. LockSupport1-1. LockSupport란?synchronized의 경우 임계 영역에 접근하지 못하고 대기 중인 스레드는 BLOCKED 상태가 된다. BLOCKED 상태는 다른 스레드에 의해 interrupt 될 수 없기 때문에 lock을 얻지 못하면 영원히 대기 상태로 유지한다.LockSupport는 무한 대기를 해결하기 위해서 대기 중인 스레드의 상태를 BLOCKED가 아닌 WAITING 이 되게 한다. WAITING 상태는 다른 스레드가 interrupt를 통해 깨우거나, 스스로가 시간을 정하여 깨어날 수 있다.1-2. LockSupport의 대표적인 기능park() : 현재 스레드를 WAITING 상태로 바꾼다.parkNanos(nanos) : 나노초 동안 현재 스레드를 TIMED_..
식사하는 철학자 문제식사하는 철학자 문제는 교착 상태를 설명하기 위해서 사용되는 문제입니다. 5명의 철학자가 존재하고 왼쪽과 오른쪽에 포크가 존재합니다. 앞에 놓인 음식을 먹기 위해서는 양손에 포크를 가지고 있어야 합니다. 단, 조건이 존재합니다.왼쪽 포크를 사용할 수 있다면 집어든다.오른쪽 포크를 사용할 수 있다면 집어든다.왼쪽과 오른쪽 포크 모두 집었다면 앞에 놓인 음식을 먹을 수 있다.식사가 끝나면 오른쪽 포크를 내려놓는다.오른쪽 포크를 놓은 후 왼쪽 포크를 놓는다.단순히 모든 철학자가 양손에 포크를 들어 식사를 하면 될 것 같습니다. 그러나 모든 철학자가 포크를 사용하려고 하면 문제가 발생합니다. 모두가 왼쪽 포크를 집게 된다면 어느 누구도 오른쪽 포크를 집을 수 없게 됩니다. 각자 오른쪽 포..