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

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

Dec 27, 2019 pm 03:14 PM
java sleep wait

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 de ce site Web
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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Comment forcer les pages Web à l'échelle par UC Browser_UC Browser à mise à l'échelle des pages Web par UC Browser Comment forcer les pages Web à l'échelle par UC Browser_UC Browser à mise à l'échelle des pages Web par UC Browser Sep 24, 2025 pm 04:54 PM

Tout d'abord, activez la fonction de mise à l'échelle intégrée du navigateur UC, accédez aux paramètres → Paramètres parcourir → Police et composition ou mise à l'échelle de la page, et sélectionnez un rapport préréglé ou un pourcentage personnalisé; Deuxièmement, vous pouvez forcer la taille de l'affichage de la page en ouvrant ou en pinçant des gestes avec deux doigts; Pour les pages Web qui restreignent la mise à l'échelle, vous pouvez demander la version de bureau du site Web pour déverrouiller les restrictions; Les utilisateurs avancés peuvent également modifier les attributs de la fenêtre en exécutant le code JavaScript dans la barre d'adresse pour obtenir un effet de mise à l'échelle forcé plus flexible.

Pourquoi les systèmes en temps réel ont-ils besoin de garanties de réponse déterministe? Pourquoi les systèmes en temps réel ont-ils besoin de garanties de réponse déterministe? Sep 22, 2025 pm 04:03 PM

Les systèmes en temps réel nécessitent des réponses déterministes, car l'exactitude dépend du délai de livraison des résultats; Les systèmes durs en temps réel nécessitent des délais stricts, manqués entraînera des catastrophes, tandis que le temps réel doux permet des retards occasionnels; Des facteurs non déterministes tels que la planification, les interruptions, les caches, la gestion de la mémoire, etc. affectent le calendrier; Le plan de construction comprend la sélection des RTO, l'analyse WCET, la gestion des ressources, l'optimisation matérielle et les tests rigoureux.

Comment obtenir le nom de la méthode d'appel en Java? Comment obtenir le nom de la méthode d'appel en Java? Sep 24, 2025 am 06:41 AM

La réponse consiste à utiliser Thread.currentThread (). GetStackTrace () pour obtenir le nom de la méthode d'appel, et obtenir le nom Somemethod de l'appel un autre Method via l'index 2. Étant donné que l'index 0 est GetStackTrace, 1 est la méthode actuelle, et 2 est l'appelant, l'exemple de production est "appelé paryMethod: Somemethod", qui peut également être mis en œuvre par le jetable, mais que l'attention doit être accordée à la performance, à l'obfrégation.

Comment gérez-vous les exceptions en Java? Comment gérez-vous les exceptions en Java? Sep 23, 2025 am 04:44 AM

La manipulation des exceptions Java attrape des exceptions via les blocs de capture d'essai, les blocs finissent par s'assurer que le nettoyage des ressources, les ressources essai avec les ressources, gèrent automatiquement les ressources, lance des exceptions, les exceptions personnalisées pour gérer les erreurs spécifiques et suit les meilleures pratiques telles que la capture d'exceptions spécifiques, et non les exceptions, et d'éviter les blocs de capture vides, ainsi en train d'obtenir un code robuste et maintenable.

Comment utiliser la classe facultative pour éviter NullPointerException en Java? Comment utiliser la classe facultative pour éviter NullPointerException en Java? Sep 25, 2025 am 06:04 AM

La classe facultative est utilisée pour gérer en toute sécurité les valeurs qui peuvent être nuls, en évitant les exceptions de pointeur nul. 1. Créez une instance en utilisant Facultatif.Ofnullable pour gérer les valeurs nulles. 2. Vérifiez et accédez aux valeurs via une sécurité ISPRESENT ou IFPRESENT pour éviter un appel direct pour provoquer des exceptions. 3. Utilisez Orelse et Orelseget pour fournir des valeurs par défaut, ou utilisez OrelSethrow pour lancer une exception personnalisée. 4. Convertir ou filtrer les valeurs par le biais des opérations de la chaîne de carte et de filtre pour améliorer la lisibilité du code et la robustesse.

Microsoft Edge High Utilisation du processeur Microsoft Edge High Utilisation du processeur Sep 24, 2025 am 12:17 AM

Edge occupe un CPU élevé en raison de la consommation élevée de ressources basée sur le noyau de chrome, ainsi que des facteurs tels que les pages multi-tabs, l'exécution du plug-in, les scripts de site Web et les mécanismes de rendu; Les solutions comprennent: 1. Fermer des extensions inutiles pour réduire le fardeau en arrière-plan; 2. Activer la fonction "tag de sommeil" pour réduire l'utilisation des ressources de balise inactive; 3. Nettoyez le processus d'arrière-plan et fermez les paramètres liés au rendu GPU; 4. Mettez à jour le navigateur et le système pour assurer la compatibilité et l'optimisation des performances.

Cette opération a été annulée en raison de restrictions en vigueur sur cet ordinateur [fixe] Cette opération a été annulée en raison de restrictions en vigueur sur cet ordinateur [fixe] Sep 22, 2025 am 03:41 AM

Ifyousee "ThisOperationHasbeencanceLeldDuetorestrictions", "tryTheSestests: 1.CheckRegistrySettingSunderPolicies \ Explorer.2.ReviewGroupolicyForBlockedPrograms.3

Comment obtenir la classe d'un objet en Java? Comment obtenir la classe d'un objet en Java? Sep 26, 2025 am 04:58 AM

Utilisez la méthode getClass () pour obtenir la classe d'exécution de l'objet, tel que str.getClass () pour renvoyer l'objet de classe; Pour les types, vous pouvez utiliser directement la syntaxe String.class. La classe de classe fournit des méthodes telles que getName (), getIMPLename () pour obtenir des informations de classe, telles que num.getClass (). GetIMPlename () pour sortir entier.

See all articles