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
- Ele sempre pausa a execução da thread atual.
- 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.
Thread.sleep()
não perde nenhum monitor ou trava a thread atual que adquiriu.- 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):
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:
OutputSleep 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