스레드의 생명주기와 제어 (Lifecycle, join, interrupt)
자바 스레드는 New, Runnable, Terminated 외에도 Lock 획득을 대기하는 Blocked, 신호를 기다리는 Waiting 등 다양한 상태를 가집니다. 개발자는 join()으로 작업 순서를 맞추거나, interrupt()로 안전하게 중단 요청을 보낼 수 있습니다. 스레드의 상태 흐름과 제어 기법을 이해하는 것은 동시성 프로그래밍의 기초입니다.
자바 스레드는 New, Runnable, Terminated 외에도 Lock 획득을 대기하는 Blocked, 신호를 기다리는 Waiting 등 다양한 상태를 가집니다. 개발자는 join()으로 작업 순서를 맞추거나, interrupt()로 안전하게 중단 요청을 보낼 수 있습니다. 스레드의 상태 흐름과 제어 기법을 이해하는 것은 동시성 프로그래밍의 기초입니다.
멀티태스킹은 CPU 시간을 쪼개어 동시성을 흉내 내는 기술이며, 실제 병렬 처리는 멀티프로세싱입니다. 프로세스는 독립된 메모리를 갖는 ‘공장’, 스레드는 스택만 독립적으로 갖고 힙을 공유하는 ‘일꾼’입니다. JVM 메모리 중 스레드끼리 공유하는 Heap 영역은 동시성 문제의 원인이 되기도 합니다. 유연한 확장을 위해 스레드 구현 시 Runnable 인터페이스 사용을 권장합니다.