thread sleep thread sleep method java with examples
Neste tutorial, discutiremos o método Thread Sleep () em Java. Veremos como o método Thread.Sleep () funciona com a ajuda de Exemplos:
O java.lang.Thread.sleep (long millis) método é o método fornecido pela classe Thread que coloca o thread atualmente em execução para dormir. Vamos especificar o tempo de sono como um argumento do método do sono.
=> Dê uma olhada no guia para iniciantes em Java aqui.
O que você aprenderá:
Método Thread Sleep () em Java
A classe Thread do Java fornece duas variantes do método sleep.
O protótipo de ambas as variantes do método sleep () é descrito abaixo.
# 1) Variante do Método do Sono # 1
Protótipo: public static void sleep (long millis) lança InterruptedException
Parâmetros: millis => a duração de tempo em milissegundos durante o qual o thread dorme.
Valor de retorno: vazio
Lança:
- IllegalArgumentException => se milis for negativo
- InterruptedException => se qualquer outro segmento interromper o segmento atual. Quando essa exceção ocorre, o status interrompido do encadeamento é limpo.
Descrição: Esta variação do método sleep faz o thread atual dormir ou interrompe temporariamente sua execução por um determinado número de milissegundos (fornecido no argumento do método). No entanto, durante o sono, o thread não perde o monitor ou bloqueia a propriedade.
# 2) Variante do método do sono # 2
Protótipo: public static void sleep (long millis, int nanos) lança InterruptdException
Parâmetros:
equipe base servidor gerenciamento ágil de projetos
- milis => a duração em milissegundos durante a qual o encadeamento deve dormir.
- nanos => nanossegundos adicionais para os quais o thread pode dormir. O intervalo é 0 - 999999.
Valor de retorno: vazio
Lança:
- IllegalArgumentException => se o valor de milis for negativo ou o valor de nanos se estiver fora do intervalo.
- InterruptedException => se qualquer outro segmento interromper o segmento atual. O status interrompido do encadeamento é limpo quando essa exceção ocorre.
Descrição: Esta variante do método sleep faz com que o thread o invoque para dormir ou pare temporariamente sua execução por um determinado número de milissegundos. (primeiro argumento em uma chamada de método). Além disso, também fornecia o número de nanossegundos (segundo argumento em uma chamada de método) para dormir.
Observe que a exatidão e a precisão do tempo especificado dependem dos cronômetros e programadores do sistema. Quando o thread está suspenso, a propriedade do bloqueio ou monitor não é alterada.
Método de Trabalho de Thread.Sleep
Sempre que um thread é interrompido ou suspenso, isso é feito pelo planejador. O método Thread.sleep () se comunica com o agendador de thread para que o agendador possa fazer com que a thread atualmente em execução mude para aguardar o estado por um determinado período.
Uma vez que este tempo especificado termina, o estado da thread é alterado para ‘executável’ para que possa esperar que a CPU prossiga com a execução.
Portanto, a duração de quanto tempo o thread dorme depende do planejador e não do método. Como o planejador é parte do sistema operacional, a arquitetura do sistema operacional também desempenha um papel nas mudanças de estado do thread.
Agora que vimos o método Thread.sleep () em detalhes, devemos manter alguns dos pontos em mente ao usar esse método.
Os ponteiros incluem:
# 1) O método Thread.sleep () sempre pausa a execução da thread atual.
#dois) A duração real para a qual o thread dorme depende dos planejadores e cronômetros do sistema.
Por exemplo, para um sistema muito ocupado, o tempo de hibernação do thread pode ser maior do que o especificado, ao passo que, para o sistema que não está tão ocupado, pode ser mais ou menos próximo de um tempo especificado.
# 3) Enquanto o fio está dormindo, ele não perde nenhuma fechadura ou monitor que havia adquirido antes de dormir.
# 4) O encadeamento atual que está inativo pode ser interrompido por qualquer outro encadeamento. Nesse caso, “InterruptedException” é acionado.
Exemplo de Thread.sleep em Java
Vamos agora passar para um exemplo que demonstra o método do sono. Aqui, temos uma classe de thread que possui um método run (). No método run (), chamamos ‘Thread.sleep (1000)’. Então, na função principal, criamos duas instâncias deste thread, ou seja, dois threads. Em seguida, iniciamos os tópicos.
Na saída, notamos que como ambos os threads estão em execução, os threads são agendados um após o outro, ou seja, quando um dorme, o outro está em execução.
Exemplo:
class SleepThread extends Thread { //run method for thread public void run() { for(int i=1;i<5;i++) { try { //call sleep method of thread Thread.sleep(1000); }catch(InterruptedException e){System.out.println(e);} //print current thread instance with loop variable System.out.println(Thread.currentThread().getName() + ' : ' + i); } } } class Main{ public static void main(String args()) { //create two thread instances SleepThread thread_1 = new SleepThread(); SleepThread thread_2 = new SleepThread(); //start threads one by one thread_1.start(); thread_2.start(); } } Resultado:

Quando observamos a saída, descobrimos que Thread_0 e Thread_1 se revezam para executar.
Thread.sleep () com valor de tempo de sono negativo
A seguir, vamos demonstrar outro exemplo do método Thread.sleep (). Aqui, consideramos um caso especial de um valor de tempo de sono negativo. O programa é semelhante ao programa acima, mas o tempo de suspensão fornecido é -500.
Exemplo:
melhor software para corrigir problemas de computador
class SleepThread extends Thread { public void run() { for(int i=1;i<5;i++) { try { //call sleep method with negative value of time Thread.sleep(-500); }catch(InterruptedException e){System.out.println(e);} System.out.println(i); } } } class Main{ public static void main(String args()) { //create two thread instances SleepThread t1=new SleepThread(); SleepThread t2=new SleepThread(); //start the threads one by one t1.start(); t2.start(); } } Resultado:

A partir da saída, podemos ver que o método lançou ‘IllegalArgumentException’ já que o valor negativo do tempo de suspensão não é aceitável.
perguntas frequentes
P # 1) Como o thread sleep funciona em Java?
Responda: Quando o sleep () é chamado no thread com um período de tempo especificado em milissegundos, o thread interrompe sua execução. Ele abre mão da CPU. Assim, durante a duração em que o thread está adormecido, os outros threads podem usar a CPU.
Q # 2) O que é yield () e sleep () no thread Java?
Responda: O método sleep () da thread faz com que a thread abandone a CPU e cesse a execução. Enquanto este thread dorme, os outros threads adquirem CPU. Isso é feito pelo planejador.
O método yield () também faz com que o thread desista do controle da CPU quando chamado, mas o método sleep () exibe um comportamento mais determinado quando comparado ao yield ().
P # 3) Como você impede que um thread Java entre no modo de suspensão?
Responda: Paramos o encadeamento Java de hibernar usando o método interrupt (). Qualquer thread que está esperando ou dormindo pode ser interrompida invocando o método interrupt () da classe Thread.
P # 4) Podemos matar um thread em Java?
Responda: Não, o thread não é eliminado em Java. Em vez disso, o encadeamento é interrompido em Java. O encadeamento é encerrado e pode ser encerrado normalmente. Freqüentemente, usamos um campo booleano volátil que é verificado periodicamente em busca de quaisquer alterações nos valores, para que possamos encerrar a thread.
P # 5) Por que sleep () é um método estático?
Responda: Ao chamar o método sleep () para colocar a thread em espera, sempre o chamamos usando a classe Thread.
Por exemplo , Thread.sleep (1000);
qual é a diferença entre c ++ e java
A chamada acima funciona no contexto do thread atual e coloca o thread atual em espera. Nunca chamamos o método usando uma instância de thread específica. Portanto, o método é estático.
Conclusão
Neste tutorial, discutimos o método sleep () de threads em Java. O método Sleep () faz com que o thread atual em execução cesse sua execução por um período de tempo especificado, fornecido como um argumento para o método sleep.
O planejador do sistema trabalha com o método sleep para colocar o thread atual no estado de espera. Enquanto o thread está inativo, ele continua a possuir os bloqueios ou monitores que adquiriu. Quando passamos um valor negativo de tempo de sono para o método de sono, ele lança ‘IllegalArgumentException’.
Quando passamos um valor de tempo de espera válido para o método sleep (), as outras threads executam enquanto a thread atual dorme.
=> Verifique aqui para ver A-Z dos tutoriais de treinamento de Java aqui.
Leitura recomendada
- Multithreading em Java - Tutorial com exemplos
- Multithreading em C ++ com exemplos
- Java sincronizado: o que é sincronização de thread em Java
- Threads Java com métodos e ciclo de vida
- Tutorial de Java String | Métodos Java String com exemplos
- Como usar o método toString Java?
- TreeMap em Java - Tutorial com exemplos de TreeMap em Java
- Tutorial JAVA para iniciantes: mais de 100 tutoriais práticos em vídeo Java