Maison  >  Article  >  Java  >  Quelle est la différence entre attendre et dormir en Java ?

Quelle est la différence entre attendre et dormir en Java ?

青灯夜游
青灯夜游original
2019-12-27 15:14:064416parcourir

Quelle est la différence entre attendre et dormir en Java ?

sleep :

La méthode sleep appartient à la méthode de la classe Thread, ce qui signifie mettre un thread en état de veille et le réveiller automatiquement après un certain temps d'attente.Pour entrer dans l'état exécutable, il n'entrera pas immédiatement dans l'état d'exécution, car le mécanisme de planification des threads prend également du temps pour reprendre l'exécution du thread après qu'un objet thread ait appelé la méthode sleep, il ne libérera pas tous les verrous d'objet qu'il détient, il n'affectera donc pas le fonctionnement des autres objets de processus. Cependant, pendant le processus de veille, son interruption () peut être appelée par d'autres objets, entraînant une exception InterruptedException. Si votre programme n'attrape pas cette exception, le thread se terminera anormalement et entrera dans l'état TERMINATED. , Exception, le programme continuera à exécuter le bloc d'instructions catch (et éventuellement le bloc d'instructions final) et le code suivant.

wait :

wait est une méthode membre d'Object Une fois qu'un objet appelle la méthode wait, les méthodes notify() et notifyAll() doivent être utilisées pour se réveiller. Si un thread possède un verrou de synchronisation sur un ou plusieurs objets, alors après avoir appelé wait(), le thread libérera toutes les ressources de synchronisation qu'il détient, sans se limiter à l'objet sur lequel la méthode wait() a été appelée. La méthode wait() peut également être générée par d'autres objets appelant la méthode interrompu() pendant le processus d'attente.

La différence entre les méthodes sleep et wait est la suivante :

  sleep vient de la classe Thread, tandis que wait vient de la classe Object

greep La méthode sleep ne libère pas le verrou. La méthode wait libère le verrou, permettant à d'autres threads d'utiliser des blocs ou des méthodes de contrôle de synchronisation

● Wait, notify et notifyAll ne peuvent être utilisés que dans des méthodes de contrôle de synchronisation ou des blocs de contrôle de synchronisation. , tandis que sleep peut être utilisé n'importe où

Quantity sleep doit intercepter les exceptions, while wait, notify et notifyTous n'ont pas besoin d'intercepter les exceptions

Apprentissage recommandé : Tutoriel vidéo Java

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn