[java] 쓰레드 풀의 스레드 종료 처리 방법

쓰레드 풀은 작업을 처리하는데 사용되는 일련의 스레드를 관리하는 메커니즘입니다. 쓰레드 풀의 스레드를 종료하는 방법에 대해 알아보겠습니다.

쓰레드 풀의 스레드 종료 방법

쓰레드 풀의 스레드를 종료하는 방법 중 하나는 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