[kotlin] 코틀린에서의 스레드 풀 적용 사례

소개

스레드 풀은 다중 작업을 처리하는 데 사용되는 중요한 개념입니다. 코틀린에서 스레드 풀을 적용하는 방법에는 여러 가지가 있습니다. 이 글에서는 java.util.concurrent 패키지의 ThreadPoolExecutor를 사용하는 방법을 살펴보겠습니다.

스레드 풀 생성하기

import java.util.concurrent.Executors
import java.util.concurrent.ThreadPoolExecutor

// 스레드 풀 생성
val poolSize = Runtime.getRuntime().availableProcessors()  // 사용 가능한 프로세서 수
val threadPool: ThreadPoolExecutor =
    Executors.newFixedThreadPool(poolSize) as ThreadPoolExecutor

위의 코드를 사용하면 현재 시스템에서 사용 가능한 프로세서 수만큼 스레드를 가진 스레드 풀이 생성됩니다. Executors.newFixedThreadPool() 메서드를 사용하여 스레드 풀을 생성하고, 반환되는 ExecutorService 인터페이스를 ThreadPoolExecutor로 캐스팅합니다.

작업 제출하기

val task = Runnable {
    // 작업을 실행할 코드 작성
}

// 작업 제출
threadPool.execute(task)

Runnable로 작업을 정의하고, execute() 메서드를 사용하여 작업을 스레드 풀에 제출합니다. 스레드 풀은 작업을 실행할 스레드를 선택하여 처리합니다.

스레드 풀 종료하기

// 스레드 풀 종료
threadPool.shutdown()

모든 작업이 완료된 후에는 스레드 풀을 종료해야 합니다. shutdown() 메서드를 호출하면 스레드 풀에 대기 중인 작업들이 모두 처리될 때까지 기다립니다.

요약

위에서는 코틀린에서 ThreadPoolExecutor를 사용하여 스레드 풀을 생성하고 작업을 제출하고 종료하는 방법을 알아보았습니다. 스레드 풀을 사용하면 다중 작업을 효율적으로 처리할 수 있으며, 코틀린에서도 간단하게 구현할 수 있습니다.

참고 자료