HOWTO · Kotlin

Verwenden Sie die Kotlin-Sleep-Funktion, um die Ausführung eines Threads auszusetzen

Dieser Artikel stellt vor, wie Sie die Schlaffunktion und andere Funktionen verwenden, die das Anhalten der Ausführung in Kotlin ermöglichen.

Java hat eine wait()-Funktion, die die Ausführung des aktuellen Threads pausiert. Der Thread schläft, bis ein anderer Thread eintritt und den schlafenden Thread benachrichtigt.

Aber gibt es ein Äquivalent in Kotlin? Kotlin hat nicht die Funktion wait(), aber es hat die Funktion sleep().

Die Kotlin-Funktion sleep() unterbricht die Ausführung einer bestimmten Coroutine. Während dies die Ausführung nicht anhält, ermöglicht es die Ausführung anderer Coroutinen.

In diesem Artikel erfahren Sie, wie Sie die Funktion sleep() in Kotlin verwenden. Außerdem lernen wir eine andere Möglichkeit kennen, eine Coroutine mit der Funktion delay() zu unterbrechen.

Verwendung der Kotlin-Funktion Thread.Sleep()

Wir können die Funktion Thread.sleep() verwenden, um eine Coroutine in den Ruhezustand zu versetzen und andere unabhängige Coroutinen laufen zu lassen.

Die Syntax zur Verwendung der Funktion sleep() lautet:

Thread.sleep(milliseconds)

Hier ist ein Beispiel, in dem wir die Kotlin-Funktion sleep() verwenden, um die Ausführung einer Coroutine um 3 Sekunden zu unterbrechen.

fun main() {

    println("Suspending execution")

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

    println("Resuming execution")
}

Ausgabe:

Verwenden der Kotlin-Schlaffunktion von Thread

Verwendung der Kotlin-Funktion TimeUnit Sleep()

Wie Thread.sleep() können wir auch TimeUnit verwenden, um die Ausführung eines Threads zu unterbrechen.

Während die Thread-Technik nur die Anzahl der Millisekunden als Eingabe akzeptiert, akzeptiert TimeUnit 7 verschiedene Zeiteinheiten. Diese 7 Zeiteinheiten sind:

  1. Nanosekunden
  2. Mikrosekunden
  3. Millisekunden
  4. Sekunden
  5. Minuten
  6. Stunden
  7. Tage

Die TimeUnit rechnet den übergebenen Wert automatisch in Millisekunden um, was die Funktion sleep() entgegennimmt.

Die TimeUnit-Methoden sind Teil der java.util.concurrent-Bibliothek. Daher müssen wir die concurrent-Bibliothek importieren, um diese Methode zu verwenden.

Hier ist ein Beispiel, das die Kotlin-Funktion sleep() von TimeUnit demonstriert.

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")
}

Ausgabe:

Verwenden der Kotlin-Schlaffunktion von TimeUnit

Verwendung der Kotlin-Funktion Delay()

Neben der Kotlin-Funktion sleep() können wir auch die Funktion delay() verwenden, um die Ausführung einer Coroutine zu unterbrechen. Die Funktion delay() akzeptiert auch Millisekunden als Eingabe.

Hier ist ein Beispiel, um die Verwendung der Kotlin-Funktion delay() zu zeigen.

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
}

Ausgabe:

Verwenden der Kotlin-Verzögerungsfunktion