Thread.sleep() in Java – Java Thread slaap

Introductie

De Java Thread.sleep() methode kan worden gebruikt om de uitvoering van de huidige thread te pauzeren voor een opgegeven tijd in milliseconden. De argumentwaarde voor milliseconden kan niet negatief zijn. Anders wordt een IllegalArgumentException gegenereerd.

sleep(long millis, int nanos) is een andere methode die kan worden gebruikt om de uitvoering van de huidige thread te pauzeren voor een opgegeven aantal milliseconden en nanoseconden. De toegestane nanoseconde waarden liggen tussen 0 en 999999.

In dit artikel leer je over Java’s Thread.sleep().

Hoe Thread.sleep Werkt

Thread.sleep() werkt samen met de threadscheduler om de huidige thread in een wachttoestand te plaatsen voor een bepaalde periode. Zodra de wachttijd voorbij is, wordt de threadstatus gewijzigd naar een uitvoerbare toestand en wacht op de CPU voor verdere uitvoering. De daadwerkelijke tijd dat de huidige thread slaapt, is afhankelijk van de threadscheduler die deel uitmaakt van het besturingssysteem.

Belangrijke punten over Java Thread.sleep

  1. Het pauzeert altijd de uitvoering van de huidige thread.
  2. De daadwerkelijke tijd dat de thread slaapt voordat hij wakker wordt en met de uitvoering begint, hangt af van systeemtimers en schedulers. Voor een rustig systeem is de werkelijke slaaptijd bijna gelijk aan de opgegeven slaaptijd, maar voor een druk systeem zal deze iets langer zijn.
  3. Thread.sleep() verliest geen monitoren of vergrendelt de huidige thread waarop het is verworven.
  4. Elke andere thread kan de huidige thread onderbreken tijdens het slapen, en in dergelijke gevallen wordt InterruptedException gegenereerd.

Voorbeeld van Java Thread.sleep

Hier is een voorbeeldprogramma waarin Thread.sleep() wordt gebruikt om de uitvoering van de hoofdthread 2 seconden (2000 milliseconden) te onderbreken:

ThreadSleep.java
package com.journaldev.threads;

public class ThreadSleep {

    public static void main(String[] args) throws InterruptedException {
        long start = System.currentTimeMillis();

        Thread.sleep(2000);

        System.out.println("Sleep time in ms = " + (System.currentTimeMillis() - start));
    }
}

Eerst slaat deze code de huidige systeemtijd op in milliseconden. Vervolgens slaapt het gedurende 2000 milliseconden. Ten slotte drukt deze code de nieuwe huidige systeemtijd af min de vorige huidige systeemtijd:

Output
Sleep time in ms = 2005

Merk op dat dit verschil niet precies 2000 milliseconden is. Dit komt door hoe Thread.sleep() werkt en de besturingsspecifieke implementatie van de threadscheduler.

Conclusie

In dit artikel heb je kennis gemaakt met Java’s Thread.sleep().

Ga verder met leren door meer Java tutorials.

Source:
https://www.digitalocean.com/community/tutorials/thread-sleep-java