Thread.sleep() em Java – Java Thread sleep

Introdução

O método Java Thread.sleep() pode ser usado para pausar a execução da thread atual por um tempo especificado em milissegundos. O valor do argumento para milissegundos não pode ser negativo. Caso contrário, ele lança IllegalArgumentException.

O método sleep(long millis, int nanos) é outro método que pode ser usado para pausar a execução da thread atual por um número especificado de milissegundos e nanossegundos. Os valores de nanossegundos permitidos estão entre 0 e 999999.

Neste artigo, você aprenderá sobre o Thread.sleep() do Java.

Como o Thread.sleep Funciona

O Thread.sleep() interage com o escalonador de threads para colocar a thread atual em um estado de espera por um período de tempo especificado. Uma vez que o tempo de espera acabou, o estado da thread é alterado para um estado de execução e aguarda a CPU para mais execução. O tempo real que a thread atual dorme depende do escalonador de threads que faz parte do sistema operacional.

Pontos importantes do Java Thread.sleep

  1. Ele sempre pausa a execução da thread atual.
  2. O tempo real que a thread dorme antes de acordar e começar a execução depende dos temporizadores e agendadores do sistema. Para um sistema tranquilo, o tempo real de dormir é próximo ao tempo especificado, mas para um sistema ocupado, será um pouco mais longo.
  3. Thread.sleep() não perde monitores ou trava a thread atual que adquiriu.
  4. Qualquer outra thread pode interromper a thread atual durante o sono, e nesses casos, uma InterruptedException é lançada.

Exemplo de Java Thread.sleep

Aqui está um programa de exemplo onde Thread.sleep() é usado para pausar a execução da thread principal por 2 segundos (2000 milissegundos):

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

Primeiro, este código armazena o tempo atual do sistema em milissegundos. Em seguida, ele dorme por 2000 milissegundos. Finalmente, este código imprime o novo tempo atual do sistema menos o tempo anterior do sistema:

Output
Sleep time in ms = 2005

Observe que essa diferença não é precisamente de 2000 milissegundos. Isso ocorre devido ao funcionamento do Thread.sleep() e à implementação específica do agendador de threads no sistema operacional.

Conclusão

Neste artigo, você aprendeu sobre o Thread.sleep() em Java.

Continue sua aprendizagem com mais tutoriais de Java.

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