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
- Sempre pausa a execução do encadeamento atual.
- 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.
Thread.sleep()
não perde nenhum monitor ou bloqueia o thread atual que adquiriu.- 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:
OutputSleep 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.