Kotlin/포스팅

코틀린 쓰레드

짜집퍼박사(짜박) 2024. 1. 7. 13:29

코틀린에서의 스레드 관리는 주로 Java의 java.lang.Thread 클래스를 기반으로 합니다. 그러나 코틀린에서는 스레드를 좀 더 간결하게 다룰 수 있도록 확장 함수 및 람다를 활용하는 등의 편의 기능이 제공됩니다.

 

1. 기본적인 스레드 생성

코틀린에서 스레드를 생성하는 가장 기본적인 방법은 Thread 클래스를 사용하는 것입니다.

class MyThread : Thread() {
    override fun run() {
        println("MyThread is running.")
    }
}

fun main() {
    val myThread = MyThread()
    myThread.start() // 새로운 스레드에서 run 메서드 실행
    println("Main thread is running.")
}

 

2. Runnable 인터페이스 사용

코틀린에서는 Runnable 인터페이스를 직접 구현하여 스레드를 생성할 수도 있습니다.

class MyRunnable : Runnable {
    override fun run() {
        println("MyRunnable is running.")
    }
}

fun main() {
    val myRunnable = MyRunnable()
    val thread = Thread(myRunnable)
    thread.start()
    println("Main thread is running.")
}

 

3. 람다를 이용한 스레드 생성

코틀린에서는 람다를 사용하여 간결하게 스레드를 생성할 수 있습니다.

fun main() {
    val thread = Thread {
        println("Thread with lambda is running.")
    }
    thread.start()
    println("Main thread is running.")
}

 

4. 스레드 확장 함수

코틀린에서는 kotlin.concurrent.thread 확장 함수를 통해 간단하게 스레드를 생성할 수 있습니다.

fun main() {
    thread {
        println("Thread with extension function is running.")
    }
    println("Main thread is running.")
}

 

5. 스레드 풀 사용

코틀린에서는 자바의 Executor 프레임워크를 사용하여 스레드 풀을 생성하고 관리할 수 있습니다.

import java.util.concurrent.Executors

fun main() {
    val executor = Executors.newFixedThreadPool(2) // 최대 2개의 스레드를 갖는 스레드 풀 생성

    repeat(5) {
        executor.execute {
            println("Task is running on thread ${Thread.currentThread().name}")
        }
    }

    executor.shutdown() // 스레드 풀 종료
}

 

6. 코루틴과 스레드

코틀린에서는 코루틴을 통해 스레드를 더 효율적으로 사용할 수 있습니다. 코루틴은 가벼우면서도 비동기적인 작업을 효율적으로 처리할 수 있도록 도와줍니다. 이는 kotlinx.coroutines 라이브러리를 통해 제공됩니다.

import kotlinx.coroutines.*

fun main() = runBlocking {
    launch {
        // 비동기 작업
        delay(1000)
        println("Coroutine is running.")
    }

    println("Main thread is not blocked.")
    delay(2000)
    println("End")
}

코틀린은 스레드 관리를 보다 편리하게 만들어주는 다양한 기능을 제공하며, 특히 코루틴을 통해 비동기 프로그래밍을 더욱 간편하게 다룰 수 있습니다.

 

With ChatGPT

'Kotlin > 포스팅' 카테고리의 다른 글

코루틴과 일시 중단 함수  (0) 2024.01.07
코틀린 코루틴  (0) 2024.01.07
코틀린 동시성  (0) 2024.01.07
코틀린 인라인 함수  (0) 2024.01.07
코틀린 예외 선언  (0) 2024.01.07