Essa é uma pergunta muito simples, porque esses dois métodos têm um uso totalmente diferente.
A principal diferença é esperar para liberar a trava ou monitor enquanto o sono não libera nenhuma trava ou monitor enquanto aguarda. A espera é usada para comunicação entre encadeamentos enquanto a suspensão é usada para introduzir uma pausa na execução.
Esta foi apenas uma explicação clara e básica, se você quiser mais do que isso, continue lendo.
No caso de o wait()
thread do método entrar no estado de espera e ele não voltará automaticamente até chamarmos o notify()
método (ou notifyAll()
se você tiver mais de um thread no estado de espera e desejar ativar todos esses threads). E você precisa sincronizado ou o bloqueio objeto ou bloqueio classe para acesso a wait()
ou notify()
ou notifyAll()
métodos. E mais uma coisa, o wait()
método é usado para comunicação entre segmentos, porque se um segmento entrar no estado de espera, você precisará de outro segmento para ativar esse segmento.
Mas, nesse caso, sleep()
é um método usado para manter o processo por alguns segundos ou o tempo que você deseja. Porque você não precisa de provocar qualquer notify()
ou notifyAll()
método para obter isso de volta fio. Ou você não precisa de nenhum outro segmento para retornar esse segmento. Por exemplo, se você deseja que algo aconteça após alguns segundos, como em um jogo após a vez do usuário, você deseja que o usuário espere até que o computador seja reproduzido. Você pode mencionar o sleep()
método
E mais uma diferença importante que é frequentemente solicitada nas entrevistas: sleep()
pertence à Thread
classe e wait()
pertence à Object
classe.
Essas são todas as diferenças entre sleep()
e wait()
.
E há uma semelhança entre os dois métodos: ambos são instruções verificadas, então você precisa tentar pegar ou lançar para acessar esses métodos.
Eu espero que isso te ajude.