Use la función de suspensión de Kotlin para suspender la ejecución de un subproceso

Kailash Vaviya 30 enero 2023
  1. Uso de la función Thread.Sleep() de Kotlin
  2. Uso de la función TimeUnit Sleep() de Kotlin
  3. Uso de la función Delay() de Kotlin
Use la función de suspensión de Kotlin para suspender la ejecución de un subproceso

Java tiene una función esperar () que detiene la ejecución del hilo actual. El subproceso duerme hasta que entra otro subproceso y notifica al subproceso durmiente.

Pero, ¿hay un equivalente disponible en Kotlin? Kotlin no tiene la función wait(), pero tiene la función sleep().

La función sleep() de Kotlin suspende la ejecución de una rutina en particular. Si bien esto no detiene la ejecución, permite la ejecución de otras rutinas.

Este artículo enseña cómo usar la función sleep() en Kotlin. Además de eso, también aprenderemos otra forma de suspender una rutina usando la función delay().

Uso de la función Thread.Sleep() de Kotlin

Podemos usar la función Thread.sleep() para hacer que una corrutina se duerma y permitir que se ejecuten otras corrutinas independientes.

La sintaxis para usar la función sleep() es:

Thread.sleep(milliseconds)

Aquí hay un ejemplo donde usamos la función sleep() de Kotlin para suspender la ejecución de una rutina por 3 segundos.

fun main() {

    println("Suspending execution")

    try {
        // making the coroutine sleep for 3 seconds
        Thread.sleep(3000)
    } catch (e: InterruptedException) {
        e.printStackTrace()
    }

    println("Resuming execution")
}

Producción:

Uso de la función de suspensión de Kotlin desde Thread

Uso de la función TimeUnit Sleep() de Kotlin

Al igual que Thread.sleep(), también podemos usar TimeUnit para suspender la ejecución de un hilo.

Mientras que la técnica Thread solo acepta el número de milisegundos como entrada, TimeUnit acepta 7 unidades de tiempo diferentes. Estas 7 unidades de tiempo son:

  1. Nanosegundos
  2. Microsegundos
  3. Milisegundos
  4. Segundos
  5. minutos
  6. horas
  7. días

La TimeUnit convierte automáticamente el valor pasado en milisegundos, que acepta la función sleep().

Los métodos TimeUnit forman parte de la biblioteca java.util.concurrent. Por lo tanto, necesitamos importar la biblioteca concurrente para usar este método.

Aquí hay un ejemplo que demuestra la función sleep() de Kotlin desde TimeUnit.

import java.util.concurrent.TimeUnit

fun main() {
    println("Suspending execution")

    try {
        // // making the coroutine sleep for 3 seconds
        TimeUnit.SECONDS.sleep(3)
    } catch (e: InterruptedException) {
        e.printStackTrace()
    }
    println("Resuming execution")
}

Producción:

Uso de la función de suspensión de Kotlin desde TimeUnit

Uso de la función Delay() de Kotlin

Además de la función sleep() de Kotlin, también podemos usar la función delay() para suspender la ejecución de una rutina. La función delay() también acepta milisegundos como entrada.

Aquí hay un ejemplo para mostrar el uso de la función delay() de Kotlin.

import kotlinx.coroutines.*

fun main() = runBlocking {
    launch { // launches a new coroutine
        delay(2000L) // This delays the execution by 2 seconds allowing other coroutines to run independently
        println("welcome!") // This will be printed after the delay
    }
    print("Hi and ") // This will be printed first since the other coroutine is delayed
}

Producción:

Uso de la función de retardo de Kotlin

Kailash Vaviya avatar Kailash Vaviya avatar

Kailash Vaviya is a freelance writer who started writing in 2019 and has never stopped since then as he fell in love with it. He has a soft corner for technology and likes to read, learn, and write about it. His content is focused on providing information to help build a brand presence and gain engagement.

LinkedIn