Kotlin - sleep, 쓰레드 몇 초 지연

코틀린에서 sleep 함수를 사용하여 쓰레드를 몇 초 동안 지연시키는 방법을 소개합니다.

1. Thread.sleep()으로 몇 초 지연

Java의 Thread.sleep()으로 아래와 같이 쓰레드를 몇 초간 지연시킬 수 있습니다. sleep()은 InterruptedException를 발생시킬 수 있기 때문에 try-catch로 예외처리가 필요합니다.

import java.time.LocalDateTime

fun main() {

    println("sleep for 3s: " + LocalDateTime.now())

    try {
        Thread.sleep(3000)
    } catch (e: InterruptedException) {
        e.printStackTrace()
    }

    println("done: " + LocalDateTime.now())
}

Output:

sleep for 3s: 2022-09-15T21:03:42.415
done: 2022-09-15T21:03:45.416

2. TimeUnit.SECONDS.sleep()으로 몇 초 지연

Java의 TimeUnit.SECONDS.sleep()으로 아래와 같이 쓰레드를 몇 초간 지연시킬 수 있습니다. 이 함수도 InterruptedException를 발생시킬 수 있기 때문에 try-catch로 예외처리가 필요합니다.

import java.time.LocalDateTime
import java.util.concurrent.TimeUnit

fun main() {

    println("sleep for 3s: " + LocalDateTime.now())

    try {
        TimeUnit.SECONDS.sleep(3)
    } catch (e: InterruptedException) {
        e.printStackTrace()
    }

    println("done: " + LocalDateTime.now())
}

Output:

sleep for 3s: 2022-09-15T21:04:38.005
done: 2022-09-15T21:04:41.006

3. Coroutine으로 몇 초 지연

Coroutine의 delay로 몇 초간 지연시킬 수 있습니다. Coroutine의 동작이 완료될 때까지 기다리도록 runBlocking 안에서 delay를 사용하였습니다.

import kotlinx.coroutines.*
import java.time.LocalDateTime

fun main() {

    println("sleep for 3s: " + LocalDateTime.now())

    runBlocking {
        launch {
            delay(3000L)
        }
    }

    println("done: " + LocalDateTime.now())
}

Output:

sleep for 3s: 2022-09-15T21:16:05.713
done: 2022-09-15T21:16:08.763
Loading script...
codechachaCopyright ©2019 codechacha