Thread.sleep() em Java – Java Thread sleep

Introdução

O método Thread.sleep() em Java 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 uma 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 permitidos para nanossegundos 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 agendador 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 executável e espera pelo CPU para mais execução. O tempo real que a thread atual dorme depende do agendador de threads que faz parte do sistema operacional.

Pontos importantes do Thread.sleep em Java

  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. Em um sistema silencioso, o tempo real de sono é próximo ao tempo de sono especificado, mas em um sistema ocupado, será um pouco mais longo.
  3. Thread.sleep() não perde nenhum monitor ou trava a thread atual que adquiriu.
  4. Qualquer outra thread pode interromper a thread atual durante o sono, e nesses casos, InterruptedException é lançado.

Exemplo de Thread.sleep em Java

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 à forma como Thread.sleep() funciona e à implementação específica do agendador de threads no sistema operacional.

Conclusão

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

Continue sua aprendizagem com mais tutoriais de Java.

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