Dormir vs Esperar: Diferença e Comparação

Java tem vários métodos para realizar determinadas ações.

Um método é um grupo de código que é executado apenas quando é chamado; e pode ou não retornar um resultado.

Métodos como dormir e wait são usados ​​para multithreading. Ambos pausam e colocam o thread em espera, mas possuem grandes diferenças de funcionamento.

Principais lições

  1. “Dormir” é um estado de descanso no qual o corpo e a mente estão inativos, enquanto “Espera” é permanecer em um lugar ou adiar a ação até que um evento específico ocorra.
  2. “Dormir” é uma função corporal natural e necessária, enquanto “Esperar” é uma ação voluntária que pode ser escolhida ou evitada.
  3. “Sleep” está associado ao período noturno, enquanto “Wait” pode ocorrer a qualquer hora do dia.

Dormir vs Esperar

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

Dormir vs Esperar

Durante o uso do método sleep, o thread atual não perde a propriedade do monitor.

Sleep é um método estático e faz parte do thread da classe. Depois que o tempo de espera termina, o thread volta ao estado executável original.

Ele garante a utilização completa da CPU durante a espera.

Considerando que o método wait () é usado no Java programa para ordenar que o thread atual espere até que outro thread não seja invocado para aquele objeto.

O thread então continua com a execução assim que obtém o controle do monitor.

Não é um método estático, ao contrário do sleep, e faz parte de uma classe de objeto.

Tabela de comparação

Parâmetros de comparaçãoDormirEspere
AulaO método sleep faz parte da classe thread O método wait faz parte da classe de objeto
Tipo de métodoO sono é um método estáticoWait não é um método estático
técnica de chamadaO método sleep pode ser chamado de fora do contexto sincronizadoO método wait pode ser chamado apenas a partir do contexto sincronizado
Liberação de bloqueioO método sleep não libera o bloqueio do objeto, pelo tempo limite especificado, durante a sincronizaçãoO método Wait libera o bloqueio no objeto, para ter a chance de executar, durante a sincronização
Declaraçãosono vazio estático público () espera pública final nula ()

O que é dormir?

O thread sleep() é um método estático no programa Java que suspende o thread atual e o coloca em um estado de espera por um período de tempo estipulado.

Leia também:  Encaminhar x Redirecionar: Diferença e Comparação

Depois que o estado de espera e o tempo terminam, a condição do encadeamento é alterada para um estado executável. E então espera pela CPU para execução posterior.

O objetivo deste método é criar um atraso de alguns segundos no programa e simultaneamente obter o máximo aproveitamento da CPU.

Se o sistema estiver ocupado ou sobrecarregado, então o tempo de espera ou pausa é maior, caso contrário, seria menor ou igual ao tempo real.

O tipo de retorno do método sleep pode ser dito void, pois não retorna nenhum valor.

O thread de suspensão não perde o monitor ou bloqueia o thread que já adquiriu.

Se, em qualquer caso, o sono for perturbado, o thread lançará Interrupted_Exception.

O real duração o tempo de suspensão do thread depende dos agendadores e temporizadores do sistema que fazem parte do sistema operacional.

A sintaxe do método sleep é – public static void sleep(long milissegundos)

public static void sleep (long milissegundos, int nanossegundos)

Aqui, milissegundos e nanossegundos são o tempo durante o qual o encadeamento ficaria inativo.

dormir

O que é Esperar?

Wait() é um método usado para comunicação entre threads.

Sempre que a thread wait() é usada, a chamada ou thread atual é pausada e suspensa até que métodos como notify() ou notifyAll() sejam invocados no sistema.

O método notify() ativaria os threads especificados, enquanto o notifyAll() é aplicável a todos os threads.

Quando sincronizado, o método wait abre mão do bloqueio dos recursos.

Não há valor de retorno do método Wait, portanto, pode-se dizer que ele retorna void.

Leia também:  Fórum x Comunidade: Diferença e Comparação

As duas exceções do método Wait são Interrupted_Exception (quando o thread atual é interrompido durante sua suspensão) e IllegalMonitorStateException (quando o thread 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 wait libera 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()

esperar

Principais diferenças entre dormir e esperar

  1. O método Sleep faz com que o thread hiberne por um período de tempo específico e específico, por um tempo limite especificado, a menos que expire ou seja interrompido, enquanto o método Wait faz com que o thread hiberne até que métodos como notify() ou notifyAll() sejam invocados.
  2. O método Sleep é executado em um thread, enquanto o método Wait é executado em um objeto.
  3. O método Sleep é usado para sincronização de tempo, enquanto o método Wait é usado para sincronização de vários threads.
  4. Durante o thread de espera, vários threads sincronizados podem acessar o mesmo objeto adjacentemente, enquanto no thread de suspensão, vários threads sincronizados precisam aguardar a suspensão do thread atual.
  5. O método Wait libera o bloqueio ou o monitor, enquanto o método Sleep não libera o monitor durante a suspensão ou espera do thread atual.
Diferença entre X e Y 2023 05 10T161359.507
Referências
  1. https://pdfs.semanticscholar.org/51fd/24ae444910fd39b117bb3044a12591f038fa.pdf
  2. https://dl.acm.org/doi/pdf/10.1145/289524.289572

Última atualização: 31 de julho de 2023

dot 1
Um pedido?

Eu me esforcei tanto para escrever esta postagem no blog para fornecer valor a você. Será muito útil para mim, se você considerar compartilhá-lo nas mídias sociais ou com seus amigos/família. COMPARTILHAR É ♥️

18 pensamentos sobre “Sono vs Espera: Diferença e Comparação”

  1. O artigo elucida efetivamente as variações entre os métodos de suspensão e espera, fornecendo uma comparação clara e concisa. Os detalhes de sincronização e liberação de bloqueio são particularmente úteis.

    Resposta
    • O artigo faz um excelente trabalho ao delinear as diferenças entre os métodos sleep e wait. As informações sobre sincronização e liberação de bloqueio são apresentadas com clareza e precisão.

      Resposta
  2. A explicação detalhada dos métodos de suspensão e espera é excelente. Este artigo é um recurso valioso para quem busca aprimorar sua compreensão desses conceitos fundamentais de Java.

    Resposta
  3. Esta é uma comparação abrangente dos métodos sleep e wait em Java. O artigo descreve claramente as principais diferenças e fornece uma tabela de comparação útil para referência.

    Resposta
    • A análise detalhada dos métodos de suspensão e espera é muito esclarecedora. É valioso compreender as nuances e funcionalidades desses métodos na programação Java.

      Resposta
    • Achei a explicação dos métodos de dormir e esperar informativa e precisa. A tabela de comparação é particularmente útil para resumir as características contrastantes destes métodos.

      Resposta
  4. O artigo oferece uma comparação completa entre os métodos sleep e wait em Java. Agradeço as explicações detalhadas, que oferecem informações valiosas sobre suas funcionalidades.

    Resposta
    • Achei o artigo informativo e bem elaborado. As explicações dos métodos sleep e wait conduzem a uma melhor compreensão de seu uso e implicações em Java.

      Resposta
  5. O artigo oferece uma comparação detalhada dos métodos sleep e wait, fornecendo insights abrangentes sobre seus comportamentos e funcionalidades na programação Java.

    Resposta
  6. Este artigo é um recurso valioso para compreender os métodos sleep e wait em Java. As explicações são detalhadas e a tabela de comparação oferece uma referência conveniente para a compreensão das disparidades entre esses métodos.

    Resposta
    • Compartilho do mesmo sentimento, Vmorgan. A tabela de comparação fornece uma visão geral clara das diferenças e as descrições detalhadas melhoram a compreensão dos métodos de suspensão e espera.

      Resposta
  7. Obrigado pelo artigo. Agradeço a explicação detalhada das diferenças entre os métodos sleep e wait. É bom ter uma compreensão clara de como eles funcionam no programa Java.

    Resposta
    • Sua explicação do conceito é muito bem estruturada e fácil de entender. Concordo que é crucial ter clareza sobre esses métodos fundamentais.

      Resposta
  8. A distinção entre os métodos sleep e wait foi explicada detalhadamente neste artigo. Achei a explicação do comportamento do método wait durante a sincronização particularmente esclarecedora.

    Resposta
    • Concordo, Freya. O artigo fornece uma explicação clara e precisa do comportamento do método wait, facilitando a compreensão de sua funcionalidade em Java.

      Resposta
    • A descrição do artigo sobre os comportamentos e tipos de retorno dos métodos sleep e wait é altamente informativa. Compreender essas diferenças é essencial para um multithreading eficaz em Java.

      Resposta
  9. Achei o artigo altamente informativo e esclarecedor. A análise aprofundada dos métodos sleep e wait contribui muito para a compreensão de suas nuances e implicações em Java.

    Resposta
  10. O artigo fornece uma análise abrangente dos métodos sleep e wait em Java. As explicações são bem organizadas e contribuem muito para uma compreensão mais profunda desses métodos fundamentais.

    Resposta

Deixe um comentário

Quer salvar este artigo para mais tarde? Clique no coração no canto inferior direito para salvar em sua própria caixa de artigos!