분명 프로젝트를 진행하면 싱글 메인스레드만을 돌리는 프로젝트를 보기가 오히려 어려울 것이다. 두 개 이상의 스레드를 돌리면서 각종 동시성 문제와 데드락을 해결하는 과정을 거치는 경험을 갖게될텐데 여기서 생기는 문제를 쉽게 해결하기 위해 이번 기회에 한번 쭉 정리하겠다. Thread 클래스와 Runnable 인터페이스 프로세스와 스레드의 차이 부터 알고 있어야 스레드를 이해할 수 있다고 생각한다. 운영체제에서 자세히 살펴볼 수 있으니 간단하게 언급만 하고 넘어가겠다 process : 프로그램이 메모리에 적재되고 CPU 자원을 할당받아 프로그램이 실행되고 있는 상태 thread : 할당받은 자원을 이용하는 실행의 단위이고 프로세스 내에서 여러 개 생길 수 있다 하나의 프로세스는 코드와 데이터 영역은 여러 스..