Sommeil vs attente : différence et comparaison

Java a plusieurs méthodes pour effectuer certaines actions.

Une méthode est un groupe de code qui ne s'exécute que lorsqu'il est appelé ; et peut ou non renvoyer un résultat.

Des méthodes comme sleep et wait sont utilisés pour le multithreading. Les deux font une pause et envoient le fil en attente mais ont des différences majeures de fonctionnement.

Faits marquants

  1. "Sommeil" est un état de repos dans lequel le corps et l'esprit sont inactifs, tandis que "Attendre" consiste à rester à un endroit ou à retarder l'action jusqu'à ce qu'un événement spécifique se produise.
  2. « Dormir » est une fonction corporelle naturelle et nécessaire, tandis que « Attendre » est une action volontaire qui peut être choisie ou évitée.
  3. « Sommeil » est associé à la nuit, tandis que « Attente » peut survenir à tout moment de la journée.

Sommeil vs attente

La différence entre les méthodes sleep() et wait() est que la méthode sleep() est utilisée dans le programme pour interrompre l'exécution du thread en cours pendant une période donnée tandis que la méthode wait() est utilisée dans le programme pour interrompre ou suspendre le thread en cours jusqu'à ce que des méthodes spécifiques soient appelées.

Sommeil vs attente

Lors de l'utilisation de la méthode sleep, le thread actuel ne perd pas la propriété du moniteur.

Sleep est une méthode statique et fait partie du thread de classe. Une fois le temps d'attente écoulé, le thread revient à l'état exécutable d'origine.

Il assure l'utilisation complète du CPU pendant l'attente.

Alors que la méthode wait() est utilisée dans le Java programme pour ordonner au thread actuel d'attendre qu'un autre thread ne soit pas appelé pour cet objet.

Le thread poursuit ensuite l'exécution une fois qu'il a obtenu le contrôle du moniteur.

Ce n'est pas une méthode statique, contrairement à sleep, et fait partie d'une classe d'objets.

Tableau de comparaison

Paramètres de comparaisonApneeAttendez
ClasseLa méthode sleep fait partie de la classe thread La méthode d'attente fait partie de la classe d'objet
Type de méthodeLe sommeil est une méthode statiqueWait n'est pas une méthode statique
Technique d'appelLa méthode sleep peut être appelée depuis l'extérieur du contexte synchroniséLa méthode d'attente ne peut être appelée qu'à partir du contexte synchronisé
VerrouillageLa méthode Sleep ne libère pas le verrou sur l'objet, pendant le délai spécifié, lors de la synchronisationLa méthode Wait libère le verrou sur l'objet, pour avoir une chance de s'exécuter, pendant la synchronisation
Déclarationsommeil vide statique public () public final void wait()

Qu'est-ce que le sommeil?

Le thread sleep() est une méthode statique du programme Java qui suspend le thread en cours et le met dans un état d'attente pendant une période de temps stipulée.

Lisez aussi:  JTextPane vs JTextArea : différence et comparaison

Une fois l'état d'attente et le temps écoulés, la condition du thread passe à un état exécutable. Et attend ensuite le processeur pour une exécution ultérieure.

Le but de cette méthode est de créer un retard de quelques secondes dans le programme et d'avoir simultanément une utilisation maximale du CPU.

Si le système est occupé ou surchargé, le temps d'attente ou de pause est supérieur, sinon il serait inférieur ou égal au temps réel.

Le type de retour de la méthode sleep peut être dit void, car il ne renvoie aucune valeur.

Le fil de veille ne perd pas le moniteur ou ne verrouille pas le fil qu'il a déjà acquis.

Si, dans tous les cas, le sommeil est perturbé, le thread lancerait Interrupted_Exception.

L'actuel durée pour lequel le thread dormirait dépend des planificateurs et des minuteries système qui font partie du système d'exploitation.

La syntaxe de la méthode sleep est - public static void sleep (longues millisecondes)

public static void sleep(longues millisecondes, int nanosecondes)

Ici, les millisecondes et les nanosecondes sont le temps pendant lequel le thread dormirait.

sleep

C'est quoi Attendre ?

Wait() est une méthode utilisée pour la communication inter-thread.

Chaque fois que le thread wait() est utilisé, le thread appelant ou courant est mis en pause et suspendu jusqu'à ce que des méthodes telles que notify() ou notifyAll() soient invoquées dans le système.

la méthode notify() réveillerait les threads spécifiés tandis que notifyAll() est applicable à chaque thread.

Une fois synchronisée, la méthode d'attente abandonne le verrou sur les ressources.

Il n'y a pas de valeur de retour de la méthode Wait, on peut donc dire qu'elle renvoie void.

Lisez aussi:  Comment télécharger un PDF depuis Google Drive sans autorisation

Les deux exceptions de la méthode Wait sont Interrupted_Exception (lorsque le thread en cours est interrompu pendant son sommeil) et IllegalMonitorStateException (lorsque le thread en cours n'est pas le propriétaire de l'objet sur le moniteur).

La méthode Wait fait partie de la classe d'objets. La méthode n'est applicable et peut être appelée que sur un bloc synchronisé.

La méthode d'attente libère l'écran suspendu ou verrouillé pendant la synchronisation.

Et la méthode Wait permet exclusivement aux multiples threads synchronisés d'accéder un par un au même objet.

La syntaxe de la méthode Wait est - public final void wait()

attendez

Différences principales entre le sommeil et l'attente

  1. La méthode Sleep provoque la mise en veille du thread pendant une période de temps spécifiée et particulière, pour un délai d'expiration spécifié, sauf expiration ou interruption, tandis que la méthode Wait provoque la mise en veille du thread jusqu'à ce que des méthodes telles que notify() ou notifyAll() soient invoquées.
  2. La méthode Sleep s'exécute sur un thread, tandis que la méthode Wait s'exécute sur un objet.
  3. La méthode Sleep est utilisée pour la synchronisation de l'heure, tandis que la méthode Wait est utilisée pour la synchronisation multi-thread.
  4. Pendant le thread d'attente, plusieurs threads synchronisés peuvent accéder au même objet de manière adjacente, tandis que dans le thread de sommeil, plusieurs threads synchronisés doivent attendre que le sommeil du thread actuel soit terminé.
  5. La méthode Wait libère le verrou ou le moniteur, tandis que la méthode Sleep ne libère pas le moniteur pendant la veille ou l'attente du thread actuel.
Différence entre X et Y 2023 05 10T161359.507
Bibliographie
  1. https://pdfs.semanticscholar.org/51fd/24ae444910fd39b117bb3044a12591f038fa.pdf
  2. https://dl.acm.org/doi/pdf/10.1145/289524.289572

Dernière mise à jour : 31 juillet 2023

point 1
Une requête?

J'ai mis tellement d'efforts à écrire ce billet de blog pour vous apporter de la valeur. Cela me sera très utile, si vous envisagez de le partager sur les réseaux sociaux ou avec vos amis/famille. LE PARTAGE C'EST ♥️

18 réflexions sur « Sommeil ou attente : différence et comparaison »

  1. L'article explique efficacement les écarts entre les méthodes de veille et d'attente, fournissant une comparaison claire et concise. Les détails de la synchronisation et du déverrouillage sont particulièrement utiles.

    Répondre
    • L'article fait un excellent travail en décrivant les différences entre les méthodes de veille et d'attente. Les informations sur la synchronisation et le déverrouillage sont présentées avec clarté et précision.

      Répondre
  2. L'explication détaillée des méthodes de veille et d'attente est excellente. Cet article est un atout précieux pour quiconque cherche à améliorer sa compréhension de ces concepts Java fondamentaux.

    Répondre
  3. Il s'agit d'une comparaison complète des méthodes de veille et d'attente en Java. L'article décrit clairement les principales différences et fournit un tableau de comparaison utile à titre de référence.

    Répondre
    • La répartition détaillée des méthodes de veille et d'attente est très instructive. Il est utile de comprendre les nuances et les fonctionnalités de ces méthodes en programmation Java.

      Répondre
    • J'ai trouvé l'explication des méthodes de veille et d'attente informative et précise. Le tableau comparatif est particulièrement utile pour résumer les caractéristiques contrastées de ces méthodes.

      Répondre
  4. L'article propose une comparaison approfondie entre les méthodes de veille et d'attente en Java. J'apprécie les explications détaillées, qui offrent des informations précieuses sur leurs fonctionnalités.

    Répondre
    • J'ai trouvé l'article informatif et bien conçu. Les explications des méthodes sleep et wait permettent de mieux comprendre leur utilisation et leurs implications en Java.

      Répondre
  5. L'article propose une comparaison détaillée des méthodes de veille et d'attente, fournissant des informations complètes sur leurs comportements et fonctionnalités au sein de la programmation Java.

    Répondre
  6. Cet article est une ressource précieuse pour comprendre les méthodes de veille et d'attente en Java. Les explications sont détaillées et le tableau comparatif offre une référence pratique pour comprendre les disparités entre ces méthodes.

    Répondre
    • Je partage le même sentiment, Vmorgan. Le tableau comparatif donne un aperçu clair des différences et les descriptions détaillées améliorent la compréhension des méthodes de mise en veille et d'attente.

      Répondre
  7. Merci pour l'article. J'apprécie l'explication détaillée des différences entre les méthodes de veille et d'attente. Il est bon de bien comprendre comment ils fonctionnent dans le programme Java.

    Répondre
    • Votre explication du concept est très bien structurée et facile à comprendre. Je suis d'accord qu'il est crucial d'avoir de la clarté sur ces méthodes fondamentales.

      Répondre
  8. La distinction entre les méthodes de veille et d'attente a été expliquée en détail dans cet article. J'ai trouvé l'explication du comportement de la méthode d'attente pendant la synchronisation particulièrement éclairante.

    Répondre
    • Je suis d'accord, Freya. L'article fournit une explication claire et précise du comportement de la méthode wait, facilitant ainsi la compréhension de ses fonctionnalités en Java.

      Répondre
    • La description dans l'article des comportements et des types de retour des méthodes sleep et wait est très informative. Comprendre ces différences est essentiel pour un multithreading efficace en Java.

      Répondre
  9. J'ai trouvé l'article très instructif et perspicace. L’analyse approfondie des méthodes sleep et wait contribue grandement à la compréhension de leurs nuances et implications en Java.

    Répondre
  10. L'article fournit une analyse complète des méthodes de veille et d'attente en Java. Les explications sont bien organisées et contribuent grandement à une compréhension plus approfondie de ces méthodes fondamentales.

    Répondre

Laisser un commentaire

Vous voulez enregistrer cet article pour plus tard ? Cliquez sur le cœur dans le coin inférieur droit pour enregistrer dans votre propre boîte d'articles !