[kotlin] Dispatchers와 스레드풀 개념 이해하기

안녕하세요! 이번에는 Kotlin의 Dispatchers와 스레드풀(Thread Pool)에 대해 알아보겠습니다.

Dispatchers

Kotlin에서 Dispatchers는 코루틴을 실행할 때 어디서 실행할 지를 결정하는 요소입니다. 기본적으로 세 가지의 Dispatchers가 제공됩니다.

import kotlinx.coroutines.*

fun main() {
    GlobalScope.launch(Dispatchers.Main) {
        // UI 스레드에서 동작하는 코드
    }

    GlobalScope.launch(Dispatchers.IO) {
        // I/O 작업을 처리하는 코드
    }

    GlobalScope.launch(Dispatchers.Default) {
        // CPU 바운드 작업을 처리하는 코드
    }
}

스레드풀(Thread Pool)

스레드풀은 다수의 스레드를 관리하고 재사용하면서 작업을 처리하기 위한 것입니다. 스레드 생성과 제거는 시스템 자원을 많이 사용하므로, 스레드풀을 이용하여 성능 상의 이점을 얻을 수 있습니다.

스레드풀은 일반적으로 “코어 스레드 수”, “최대 스레드 수”, “대기 큐” 등의 파라미터를 가지고 있습니다.

import java.util.concurrent.*

fun main() {
   val corePoolSize = 10
   val maxPoolSize = 20
   val keepAliveTime = 5000 // milliseconds
   val workQueue = LinkedBlockingQueue<Runnable>()

   val threadPool = ThreadPoolExecutor(corePoolSize, maxPoolSize, keepAliveTime, TimeUnit.MILLISECONDS, workQueue)

   threadPool.execute {
       // 스레드풀에서 실행되는 코드
   }
}

ThreadPoolExecutor의 매개변수들은 다음과 같습니다.

요약

Dispatchers는 Kotlin의 코루틴을 특정 스레드로 디스패치하기 위한 것이며, 스레드풀은 다수의 스레드를 효율적으로 관리하면서 작업을 처리하기 위한 것입니다.

이렇게 Kotlin에서는 Dispatchers를 통해 코루틴을 스레드에 연결시키고, 스레드풀을 통해 다수의 스레드를 관리하여 효과적으로 작업을 처리할 수 있습니다.

더 자세한 내용은 Kotlin 공식 문서를 참고하세요.