Logo nl.removalsclassifieds.com

Verschil tussen slapen en wachten (met tafel)

Inhoudsopgave:

Anonim

Java heeft verschillende methoden om bepaalde acties uit te voeren. Method is een groep code die alleen wordt uitgevoerd wanneer deze wordt aangeroepen; en kan al dan niet een resultaat retourneren.

Methoden zoals slapen en wachten worden gebruikt voor multithreading. Beiden pauzeren en sturen de draad in het wachten, maar hebben grote verschillen in functioneren.

Slapen versus wachten

Het verschil tussen de methode sleep() en wait() is dat de methode sleep() in het programma wordt gebruikt om de uitvoering van de huidige thread voor een bepaalde periode te pauzeren, terwijl de methode wait() in het programma wordt gebruikt om te pauzeren of op te schorten de huidige thread totdat specifieke methoden worden aangeroepen.

Tijdens het gebruik van de slaapmethode verliest de huidige thread het eigendom van de monitor niet. De slaap is een statische methode en maakt deel uit van de klassenthread. Nadat de wachttijd voorbij is, gaat de thread terug naar de oorspronkelijke uitvoerbare staat. Het zorgt voor een volledig gebruik van de CPU, terwijl u wacht.

Terwijl de methode wait() in het Java-programma wordt gebruikt om de huidige thread te laten wachten, totdat er geen andere thread voor dat object wordt aangeroepen. De thread gaat dan verder met de uitvoering, zodra deze de controle over de monitor verkrijgt. Het is geen statische methode, in tegenstelling tot slaap, en maakt deel uit van de objectklasse.

Vergelijkingstabel tussen slapen en wachten

Parameters van vergelijking Slaap Wachten
Klas De slaapmethode maakt deel uit van de threadklasse De wait-methode maakt deel uit van de objectklasse
Type methode: Slaap is een statische methode Wachten is geen statische methode
Bellen techniek De slaapmethode kan van buiten de gesynchroniseerde context worden aangeroepen De wachtmethode kan alleen worden aangeroepen vanuit de gesynchroniseerde context
Ontgrendeling De slaapmethode ontgrendelt het object niet gedurende de opgegeven time-out tijdens synchronisatie Met de Wait-methode wordt de vergrendeling van het object ontgrendeld, zodat het tijdens de synchronisatie kan worden uitgevoerd
Verklaring openbare statische leegte slaap() openbare laatste ongeldig wacht()

Wat is slaap?

De thread sleep() is een statische methode in het Java-programma die de huidige thread onderbreekt en gedurende een bepaalde tijd in de wachtstand zet. Zodra de wachtstatus en -tijd voorbij zijn, wordt de threadvoorwaarde gewijzigd in uitvoerbare status. En wacht dan op de CPU voor verdere uitvoering.

Het doel van deze methode is om een ​​vertraging van enkele seconden in het programma te creëren en tegelijkertijd een maximale benutting van de CPU te krijgen. Als het systeem bezet of overbelast is, dan is de wacht- of pauzetijd langer en anders zou deze korter of gelijk zijn aan de werkelijke tijd.

Het retourtype van de slaapmethode kan ongeldig worden genoemd, omdat het geen waarde retourneert. Slaapdraad verliest de monitor niet en vergrendelt de draad die hij al heeft niet. Als in ieder geval de slaap wordt verstoord, zou de thread Interrupted_Exception genereren. De werkelijke duur van de sluimerstand van de thread hangt meestal af van de planners en systeemtimers die deel uitmaken van het besturingssysteem.

De syntaxis van de slaapmethode is - openbare statische leegte slaap (lange milliseconden)

openbare statische leegte slaap (lange milliseconden, int nanoseconden)

Hier milliseconden en nanoseconden is de tijd waarvoor de draad zou slapen.

Wat is wachten?

Wait() is een methode die wordt gebruikt voor communicatie tussen threads. Telkens wanneer de wait()-thread wordt gebruikt, wordt de aanroepende of huidige thread gepauzeerd en opgeschort, totdat methoden zoals notification() of notifyAll() in het systeem worden aangeroepen.

Notify() methode zou de gespecificeerde thread wakker maken terwijl notifyAll() van toepassing is op elke thread. Wanneer gesynchroniseerd, geeft de wachtmethode de vergrendeling van de bronnen op. Er is geen retourwaarde van de Wait-methode, daarom kan worden gezegd dat deze ongeldig retourneert.

De twee uitzonderingen van de Wait-methode zijn Interrupted_Exception (wanneer de huidige thread wordt onderbroken tijdens de slaapstand) en IllegalMonitorStateException (wanneer de huidige thread niet de eigenaar is van het object op de monitor).

De methode Wait is een onderdeel van de objectklasse. De methode is alleen toepasbaar en kan worden aangeroepen via een gesynchroniseerd blok. De wachtmethode stelt het opgeschorte of vergrendelde scherm vrij tijdens de synchronisatie. En met de Wait-methode kunnen de gesynchroniseerde meerdere threads uitsluitend één voor één toegang krijgen tot hetzelfde object.

De syntaxis van de methode Wait is – public final void wait()

Belangrijkste verschillen tussen slapen en wachten

Gevolgtrekking

De Sleep and Wait-methode zijn native methoden van Java. En beide worden op grote schaal gebruikt om de huidige lopende thread in een staat van niet-uitvoerbare toestand te brengen. Beide methoden worden gebruikt voor multithreading in het programma.

De slaapmethode biedt de exclusieve optie om het scherm te vergrendelen voor een bepaalde tijdsduur die gewoonlijk van nanoseconden tot milliseconden duurt. Maar de wachtmethode vergrendelt of onderbreekt het scherm totdat een andere methode wordt aangeroepen, waardoor de tijdsduur niet specifiek blijft zoals tijdens het gebruik van de slaapmethode.

Ze onderscheiden zich van elkaar in termen van specifiek functioneren zoals klasse, methode, synchronisatie en de duur van vergrendelen en ontgrendelen en verschillende andere parameters. Vaak raken de programmeurs in de war over welke methode ideaal zou kunnen zijn voor het slapen van de draad. Het gebruik van de methoden hangt af van vereisten zoals de noodzaak, urgentie en tijdsperiode van de huidige thread.

Verschil tussen slapen en wachten (met tafel)