C'est une question très simple, car ces deux méthodes ont une utilisation totalement différente.
La principale différence est d'attendre pour libérer le verrou ou le moniteur pendant que le sommeil ne libère aucun verrou ou moniteur pendant l'attente. Wait est utilisé pour la communication entre les threads tandis que sleep est utilisé pour introduire une pause lors de l'exécution.
Ce n'était qu'une explication claire et basique, si vous voulez plus que cela, continuez à lire.
En cas de wait()
thread de méthode en attente et il ne reviendra pas automatiquement jusqu'à ce que nous appelions la notify()
méthode (ou notifyAll()
si vous avez plus d'un thread en attente et que vous souhaitez réveiller tous ces threads). Et vous avez besoin synchronisé ou verrouillage de l' objet ou le verrouillage de classe pour accéder au wait()
ou notify()
ou notifyAll()
méthodes. Et encore une chose, la wait()
méthode est utilisée pour la communication entre les threads, car si un thread passe en attente, vous aurez besoin d'un autre thread pour le réveiller.
Mais dans ce cas, sleep()
c'est une méthode qui est utilisée pour maintenir le processus pendant quelques secondes ou le temps que vous voulez. Parce que vous n'avez pas besoin de provoquer une notify()
ou notifyAll()
méthode pour obtenir ce retour de fil. Ou vous n'avez besoin d'aucun autre fil pour rappeler ce fil. Comme si vous voulez que quelque chose se produise après quelques secondes, comme dans un jeu après le tour de l'utilisateur, vous voulez que l'utilisateur attende que l'ordinateur joue, alors vous pouvez mentionner la sleep()
méthode.
Et une autre différence importante qui est souvent demandée lors des entretiens: sleep()
appartient à la Thread
classe et wait()
appartient à la Object
classe.
Ce sont toutes les différences entre sleep()
et wait()
.
Et il existe une similitude entre les deux méthodes: elles sont toutes deux vérifiées, vous devez donc essayer catch ou throw pour accéder à ces méthodes.
J'espère que cela t'aidera.