Logo pt.removalsclassifieds.com

Diferença entre dormir e esperar (com tabela)

Índice:

Anonim

Java possui vários métodos para realizar certas ações. Método é um grupo de código, que é executado apenas quando é chamado; e pode ou não retornar um resultado.

Métodos como sleep e wait são usados ​​para multithreading. Ambos fazem uma pausa e colocam o encadeamento em espera, mas têm grandes diferenças de funcionamento.

Sleep vs Wait

A diferença entre os métodos sleep () e wait () é que o método sleep () é usado no programa para pausar a execução da thread atual por um determinado período de tempo enquanto o método wait () é usado no programa para pausar ou suspender o encadeamento atual até que métodos específicos sejam chamados.

Durante o uso do método sleep, o thread atual não perde a propriedade do monitor. O sono é um método estático e faz parte do thread da classe. Depois que o tempo de espera termina, o encadeamento volta ao estado executável original. Ele garante a utilização completa da CPU, enquanto espera.

Enquanto o método wait () é usado no programa Java para ordenar que o encadeamento atual espere, até que outro encadeamento não seja chamado para aquele objeto. A thread então continua com a execução, uma vez que obtenha o controle do monitor. Não é um método estático ao contrário do sono e faz parte da classe de objeto.

Tabela de comparação entre dormir e esperar

Parâmetros de comparação Dorme Esperar
Classe O método sleep é uma parte da classe thread O método de espera é uma parte da classe de objeto
Tipo de método O sono é um método estático A espera não é um método estático
Técnica de chamada O método sleep pode ser chamado de fora do contexto sincronizado O método de espera pode ser chamado apenas a partir do contexto sincronizado
Liberação de bloqueio O método Sleep não libera o bloqueio no objeto, pelo tempo limite especificado, durante a sincronização O método Wait libera o bloqueio no objeto, para ter uma chance de execução, durante a sincronização
Declaração public static void sleep () public final void wait ()

O que é dormir?

O thread sleep () é um método estático no programa Java que suspende o thread atual e o coloca em estado de espera por um período de tempo estipulado. Depois que o estado de espera e o tempo acabam, a condição do thread é alterada para o estado executável. E então aguarda a CPU para execução posterior.

O objetivo deste método é criar um atraso de alguns segundos no programa e, simultaneamente, ter o máximo aproveitamento da CPU. Se o sistema estiver ocupado ou sobrecarregado, o tempo de espera ou pausa será maior e, caso contrário, será menor ou igual ao tempo real.

O tipo de retorno do método sleep pode ser dito nulo, pois não retorna nenhum valor. A linha de espera não perde o monitor nem bloqueia a linha que já foi adquirida. Se, em qualquer caso, o sono for perturbado, o thread lançará Interrupted_Exception. A duração real para a qual o encadeamento entraria em espera geralmente depende dos agendadores e cronômetros do sistema que fazem parte do sistema operacional.

A sintaxe do método de sono é - public static void sleep (longos milissegundos)

public static void sleep (longos milissegundos, int nanossegundos)

Aqui, milissegundos e nanossegundos é o tempo durante o qual o thread entraria em repouso.

O que é esperar?

Wait () é um método usado para comunicação entre threads. Sempre que o thread wait () é usado, o thread de chamada ou atual é pausado e suspenso, até que métodos como notificar () ou notificarAll () sejam invocados no sistema.

O método notificar () despertaria o encadeamento especificado, enquanto notificarAll () é aplicável para cada encadeamento. Quando sincronizado, o método wait desiste do bloqueio para os recursos. Não há valor de retorno do método Wait, portanto, pode-se dizer que ele retorna void.

As duas exceções do método Wait são Interrupted_Exception (quando o segmento atual é interrompido durante seu sono) e IllegalMonitorStateException (quando o segmento atual não é o proprietário do objeto no monitor).

O método Wait faz parte da classe de objeto. O método só é aplicável e pode ser chamado em um bloco sincronizado. O método de espera liberta a tela suspensa ou bloqueada durante a sincronização. E o método Wait permite exclusivamente que vários threads sincronizados acessem o mesmo objeto um por um.

A sintaxe do método Wait é - public final void wait ()

Principais diferenças entre dormir e esperar

Conclusão

O método Sleep e Wait são métodos nativos de Java. E ambos são amplamente usados ​​para fazer com que o thread em andamento entre em um estado de condição não executável. Ambos os métodos são usados ​​para multithreading no programa.

O método Sleep fornece a opção exclusiva de bloquear a tela por um período de tempo específico, que geralmente dura de nanossegundos a milissegundos. Mas o método wait bloqueia ou suspende a tela até que outro método seja invocado, portanto, a duração do tempo não permanece específica como durante o uso do método sleep.

Eles se diferenciam uns dos outros em termos de funcionamento específico, como classe, método, sincronização e duração do bloqueio e liberação e vários outros parâmetros. Freqüentemente, os programadores ficam confusos sobre qual método poderia ser ideal para suspender o thread. O uso dos métodos depende de requisitos como necessidade, urgência e período de tempo do segmento atual.

Diferença entre dormir e esperar (com tabela)