La méthode wait() signifie que le thread actuel s'autorise à abandonner temporairement le verrou de la ressource de synchronisation afin que les autres threads en attente de la ressource puissent obtenir la ressource et s'exécuter uniquement. lorsqu'elle est appelée méthode notify(), le thread qui appelait précédemment wait() sera libéré de l'état d'attente et pourra participer à la compétition pour le verrouillage des ressources de synchronisation, puis être exécuté.
La méthode sleep() peut être utilisée n'importe où ; la méthode wait() ne peut être utilisée que dans les méthodes synchronisées ou les blocs synchronisés (Apprentissage recommandé : cours java )
sleep() est une méthode de la classe thread (Thread). L'appel suspendra le thread pendant la durée spécifiée, mais la surveillance sera toujours maintenue, le verrou de l'objet ne sera pas libéré et il reprendra automatiquement lorsque le temps sera écoulé ;
wait() est une méthode d'Object. L'appel abandonnera le verrouillage de l'objet et entrera dans la file d'attente. Il n'entrera pas dans le pool de verrouillage avant notify()/. notifyAll() est appelé pour réveiller le thread spécifié ou tous les threads. Il n'entrera pas tant que le verrouillage de l'objet n'est pas obtenu à nouveau
Le diagramme du cycle de vie des threads en Java est le suivant : :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!