Pesquisa de site

Thread.sleep() em Java - Java Thread sleep


Introdução

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

sleep(long millis, int nanos) é outro método que pode ser usado para pausar a execução do 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 Thread.sleep() do Java.

Como funciona o Thread.sleep

Thread.sleep() interage com o agendador de encadeamento para colocar o encadeamento atual em um estado de espera por um período de tempo especificado. Depois que o tempo de espera termina, o estado do encadeamento é alterado para um estado executável e aguarda a CPU para execução posterior. O tempo real que o thread atual dorme depende do agendador de thread que faz parte do sistema operacional.

Java Thread.sleep pontos importantes

  1. Sempre pausa a execução do encadeamento atual.
  2. O tempo real que o encadeamento dorme antes de acordar e iniciar a execução depende dos cronômetros e agendadores do sistema. Para um sistema silencioso, o tempo real de suspensão é próximo ao tempo de suspensão especificado, mas para um sistema ocupado, será um pouco mais longo.
  3. Thread.sleep() não perde nenhum monitor ou bloqueia o thread atual que adquiriu.
  4. Qualquer outro encadeamento pode interromper o encadeamento atual em suspensão e, nesses casos, InterruptedException é lançado.

Java Thread.sleep Exemplo

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

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, esse código armazena a hora atual do sistema em milissegundos. Em seguida, ele dorme por 2.000 milissegundos. Finalmente, este código imprime a nova hora atual do sistema menos a hora atual do sistema anterior:

Output
Sleep time in ms = 2005

Observe que essa diferença não é exatamente de 2.000 milissegundos. Isso se deve ao funcionamento de Thread.sleep() e à implementação específica do sistema operacional do agendador de threads.

Conclusão

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

Continue seu aprendizado com mais tutoriais de Java.

Artigos relacionados: