쓰레드 풀은 작업을 처리하는데 사용되는 일련의 스레드를 관리하는 메커니즘입니다. 쓰레드 풀의 스레드를 종료하는 방법에 대해 알아보겠습니다.
쓰레드 풀의 스레드 종료 방법
쓰레드 풀의 스레드를 종료하는 방법 중 하나는 ExecutorService
인터페이스를 사용하여 스레드 풀을 종료하는 것입니다. ExecutorService
는 스레드를 생성, 관리 및 제어할 수 있는 인터페이스이며, shutdown()
또는 shutdownNow()
메서드를 사용하여 쓰레드 풀을 종료할 수 있습니다.
shutdown()
메서드
shutdown()
메서드는 현재 대기 중인 작업을 모두 완료한 뒤에 쓰레드 풀을 종료합니다. 이 메서드를 호출한 후에는 새로운 작업을 받지 않지만, 기존 작업은 완료됩니다.
ExecutorService executor = Executors.newFixedThreadPool(5);
// 작업을 추가하는 코드
executor.shutdown();
shutdownNow()
메서드
shutdownNow()
메서드는 현재 실행 중 또는 대기 중인 작업을 즉시 종료하고, 쓰레드 풀을 종료합니다. 이 메서드를 호출하면 작업이 완료되지 않은 상태에서 종료되므로 주의해야 합니다.
ExecutorService executor = Executors.newFixedThreadPool(5);
// 작업을 추가하는 코드
executor.shutdownNow();
예외 처리
쓰레드 풀을 종료할 때는 작업이 완료되지 않은 경우 예외가 발생할 수 있습니다. 따라서 작업을 추가할 때 submit()
메서드를 사용하여 Future
인터페이스를 반환받고, Future
를 통해 작업이 완료되었는지 확인하고 예외 처리를 해주어야 합니다.
마무리
쓰레드 풀의 스레드를 안전하게 종료하는 방법에 대해 알아보았습니다. shutdown()
및 shutdownNow()
메서드를 사용하여 쓰레드 풀을 종료할 때 예외 처리에 주의해야 하며, 작업이 완료될 때까지 기다리거나 즉시 종료할 수 있는 방법을 고려하여 사용해야 합니다.
위 내용은 자바 11 기준으로 작성되었습니다.
참고: Java ExecutorService Documentation