Verschil Tussen Slapen En Wachten In Java

Inhoudsopgave:

Verschil Tussen Slapen En Wachten In Java
Verschil Tussen Slapen En Wachten In Java

Video: Verschil Tussen Slapen En Wachten In Java

Video: Verschil Tussen Slapen En Wachten In Java
Video: VGCt Keynote, Pim Cuijpers, najaarscongres 2013 2024, December
Anonim

Belangrijkste verschil - slaap versus wachten in Java

Slaap en wacht zijn twee methoden die worden gebruikt voor multithreading in Java. De slaapmethode behoort tot de Thread-klasse terwijl de wachtmethode van de Object-klasse is. Het belangrijkste verschil tussen slapen en wachten in Java is dat de slaap wordt gebruikt om de uitvoering van de huidige thread voor het opgegeven aantal milliseconden op te schorten, terwijl de wachtmethode wordt gebruikt om de huidige thread te laten wachten tot een andere thread de melding of meldAll methode voor het object.

Een thread is de kleinste verwerkingseenheid in het besturingssysteem. Het is een enkele opeenvolgende controlestroom binnen een programma. Draden zijn licht van gewicht. Multithreading is het mechanisme waarbij meerdere threads tegelijkertijd worden uitgevoerd. Programmeertalen zoals Java ondersteunen multithreading. Multithreading heeft voordelen omdat het het mogelijk maakt om meerdere threads tegelijk uit te voeren en de threads onafhankelijk van elkaar zijn. Er zijn methoden in Java die kunnen worden gebruikt voor multithreading. Twee van hen slapen en wachten.

INHOUD

1. Overzicht en belangrijkste verschil

2. Wat is slapen in Java

3. Wat is wachten in Java

4. Overeenkomsten tussen slapen en wachten in Java

5. Vergelijking zij aan zij - slaap versus wachten in Java in tabelvorm

6. Samenvatting

Wat is slapen op Java?

Er worden meerdere processen uitgevoerd in een besturingssysteem. Een proces is een programma dat wordt uitgevoerd. Elk proces kan meerdere threads hebben, en er vindt een contextwisseling plaats tussen deze threads. In Java zijn er twee manieren om een thread te maken. Dat is door de threadklasse uit te breiden of door de Runnable-interface te implementeren. De klasse Thread heeft constructors en methoden om bewerkingen op een thread te maken en uit te voeren. De Thread-klasse breidt de Object-klasse uit en implementeert de Runnable-interface. De Runnable-interface moet worden geïmplementeerd door elke klasse waarvan de instanties bedoeld zijn om te worden uitgevoerd door een thread. Wanneer de thread wordt uitgevoerd, wordt de code die moet worden uitgevoerd, geschreven in de run-methode. De thread die moet worden uitgevoerd, wordt geselecteerd door de threadplanner. Er loopt slechts één thread in één proces.

Een thread doorloopt verschillende fasen. Na het maken van een object van de Thread-klasse, kan de programmeur de startmethode aanroepen. Voordat die methode wordt aangeroepen, wordt gezegd dat de thread zich in de nieuwe staat bevindt. De threadplanner selecteert een thread om uit te voeren. Als de thread nog niet is geselecteerd door de threadplanner, maar als de startmethode wordt aangeroepen, bevindt de thread zich in een uitvoerbare staat. Nadat de thread-planner de uit te voeren thread heeft geselecteerd, gaat deze over naar de actieve status. Als de thread actief is maar momenteel niet in aanmerking komt om te worden uitgevoerd, is de status niet-uitvoerbaar of geblokkeerd. Nadat de run-methode is voltooid, gaat de thread naar de status beëindigd. Dat zijn de belangrijkste fasen van de levenscyclus van draad.

Er zijn verschillende methoden beschikbaar in de threadklasse om verschillende taken uit te voeren. De slaapmethode wordt gebruikt om de methode een bepaalde tijd te laten slapen. De syntaxis voor de slaapmethode is public void sleep (lange milliseconden) met InterruptedException. Het zorgt ervoor dat de momenteel uitgevoerde thread de uitvoering tijdelijk stopt voor een opgegeven aantal milliseconden. Als een andere thread de huidige thread onderbreekt, wordt de onderbroken status van de huidige thread gewist wanneer deze uitzondering wordt gegenereerd.

Verschil tussen slapen en wachten in Java
Verschil tussen slapen en wachten in Java

Figuur 01: Java-programma met slaapmethode

Volgens het bovenstaande programma bevat de run-methode code die moet worden uitgevoerd. In het hoofdprogramma worden twee objecten van de ExampleThread1 gemaakt en de startmethoden worden erop aangeroepen. Op die manier kan de code binnen de run-methode worden uitgevoerd. Er wordt slechts één thread tegelijk uitgevoerd. Met de draad. slaap (1000); zal de eerste thread toestaan de uitvoering gedurende 1000 milliseconden te beëindigen. Als een thread slaapt, pikt de thread scheduler de andere thread op.

Wat is wachten in Java?

Meerdere threads hebben mogelijk toegang tot een gedeelde bron. Het kan leiden tot het genereren van een onjuiste uitvoer. Thread-synchronisatie kan worden gebruikt om slechts één thread te maken om toegang te krijgen tot de gedeelde bron. Ga uit van een situatie als volgt. Als er twee threads zijn als t1 en t2, begint t1 met het opslaan van waarden in een tekstbestand met de naam Text1.txt. Die waarden worden gebruikt voor een andere berekening wanneer t1 terugkeert. Als t2 begint voordat t1 terugkeert, kan t2 de waarden wijzigen die zijn opgeslagen door t1. Dit kan ertoe leiden dat t1 een verkeerde uitvoer levert. Met behulp van synchronisatie, wanneer t1 het Text1.txt-bestand begint te gebruiken, kan dat bestand worden vergrendeld, zodat het alleen toegankelijk is voor t1. De t2 kan het niet veranderen totdat t1 de vergrendeling opheft om toegang te krijgen tot dat tekstbestand. Als de taak is voltooid, kan de t1 het slot loslaten. Het slot wordt ook wel de monitor genoemd.

Thread-synchronisatie kan worden bereikt door communicatie tussen threads. Een kritieke sectie is een codesegment dat toegang heeft tot de gedeelde bronnen. In de inter-thread communicatie wordt een thread gepauzeerd in zijn kritieke sectie, en een andere thread mag dezelfde kritieke sectie binnengaan om te worden uitgevoerd. Het wordt geïmplementeerd met behulp van de methoden Wait, Notification en Notification. Ze behoren tot de klasse Object. De methode wait wordt gebruikt om de huidige thread de vergrendeling op te heffen en te wachten tot een andere thread de methode notificeren of informerenAll voor het object aanroept. De notificatiemethode wordt gebruikt om een enkele thread te wekken die op de vergrendeling wacht. De notificationAll wekt alle threads die op het slot wachten.

Verschil tussen slapen en wachten in Java Figure 02
Verschil tussen slapen en wachten in Java Figure 02

Figuur 02: Rekenmachineklasse

Belangrijkste verschil tussen slapen en wachten in Java
Belangrijkste verschil tussen slapen en wachten in Java

Figuur 03: Hoofdmethode

De klasse Calculator breidt de Thread uit. Het gesynchroniseerde blok bevindt zich in de run-methode. De for-lus- en meldingsmethode bevindt zich in het gesynchroniseerde blok. Binnen de hoofdmethode wordt een instantie van een gemaakte thread en de startmethode aangeroepen voor die instantie. De belangrijkste methode wacht tot de thread een melding geeft. Bij het uitvoeren van het programma wacht de hoofdmethode tot de volledige uitvoering van de run-methode en wacht op de kennisgevingsmethode. Zodra de meldingsmethode is aangeroepen, stopt de hoofdmethode met wachten en begint de rest van de code uit te voeren. Main wacht tot de Calculator-thread is voltooid. Ten slotte wordt het resultaat van de som afgedrukt.

Als er geen gesynchroniseerd blok is en als de hoofdmethode een code heeft zoals hieronder, geeft het de uitvoer als nul omdat het niet wacht tot de andere thread is voltooid.

Rekenmachine t1 = nieuwe rekenmachine ();

t1. start ();

System.out.println (t1.sum);

Wat is de overeenkomst tussen slapen en wachten in Java?

Zowel slaap als wachten zijn methoden die kunnen worden gebruikt bij het implementeren van multithreading in Java

Wat is het verschil tussen slapen en wachten in Java?

Diff Artikel Midden voor Tafel

slaap versus wachten in Java

De slaapmethode zorgt ervoor dat de huidige thread de uitvoering voor het opgegeven aantal milliseconden onderbreekt, afhankelijk van de precisie en nauwkeurigheid van systeemtimers en planners. De methode wait zorgt ervoor dat de huidige thread wacht totdat een andere thread de methode notificeren of informerenAll voor het object aanroept.
Associatie met Lock
De slaapmethode heft de vergrendeling op een object niet op tijdens synchronisatie. De wachtmethode heft de vergrendeling op tijdens synchronisatie.
Uitvoeringsmethode
De slaapmethode wordt uitgevoerd op de huidige thread. De wachtmethode wordt aangeroepen op het object.
Bijbehorende klasse
De slaap is een methode van Thread-klasse. Het wachten is een methode van de Object-klasse.
Voltooiing
Het slaapproces is voltooid nadat de opgegeven hoeveelheid tijd voorbij is. De wachtmethode wordt onderbroken door de methode Notificeer of NotificatieAll aan te roepen.

Samenvatting - Slaap versus wachten in Java

Er worden meerdere processen uitgevoerd op het besturingssysteem. Elk proces kan meerdere threads hebben. Een thread is de kleinste verwerkingseenheid in een besturingssysteem. Java-programmeertaal ondersteunt multithreading. Hiermee kunnen meerdere threads tegelijkertijd worden uitgevoerd. De slaap en wacht zijn twee methoden die kunnen worden gebruikt bij het implementeren van multi-threading. Het verschil tussen slapen en wachten in Java is dat de slaap wordt gebruikt om de uitvoering van de huidige thread voor het opgegeven aantal milliseconden op te schorten, terwijl de wachtmethode wordt gebruikt om de huidige thread te laten wachten totdat een andere thread de notificatie of notificatie aanroept methode voor het object.

Aanbevolen: