Runnable을 사용하면 작업 정의와 스레드 실행을 분리할 수 있어 코드가 더 유연해지고 재사용성이 높아집니다. Thread 클래스 상속은 간단하게 스레드를 만들 때 유리하지만, 일반적으로 Runnable 인터페이스 구현 방식이 더 많이 사용됩니다.
쓰레드 풀은 여러 작업이 발생할 때 스레드의 반복 생성과 삭제를 방지하고, 최대 스레드 수를 제한하여 안정적인 멀티스레딩 환경을 제공합니다. 이를 통해, Thread와 Runnable의 단점(리소스 낭비, 관리의 어려움 등)을 보완하고, 보다 안정적이고 효율적인 멀티스레딩을 구현할 수 있습니다.
만약 쓰레드와 러너블 인터페이스로 3개의 쓰레드를 만들어 실행했을때 쓰레드 풀을 2개로 제한한다면 ?
서버 어플리케이션에서 많은 처리를 동시에 처리하기 위해서
Context Switching이란 ?