thread sleep thread sleep method java with examples
In deze zelfstudie bespreken we de Thread Sleep () -methode in Java. We zullen zien hoe de methode Thread.Sleep () werkt met behulp van voorbeelden:
De java.lang.Thread.sleep (lange millis) method is de methode die wordt geboden door de Thread-klasse die de momenteel actieve thread in slaapstand zet. We zullen de slaaptijd specificeren als een argument van de slaapmethode.
Bekijk hier de Java-beginnershandleiding.
Wat je leert:
Thread Sleep () -methode in Java
De Thread-klasse van Java biedt twee varianten van de slaapmethode.
Het prototype van beide varianten van de sleep () -methode wordt hieronder beschreven.
# 1) Slaapmethode variant # 1
Voorlopig ontwerp: openbare statische leegte slaap (lange millis) gooit InterruptedException
Parameters: millis => de tijdsduur in milliseconden gedurende welke de thread slaapt.
Winstwaarde: leegte
Gooit:
- IllegalArgumentException => als millis negatief is
- InterruptedException => als een andere thread de huidige thread onderbreekt. Wanneer deze uitzondering optreedt, wordt de onderbroken status van de thread gewist.
Omschrijving: Deze variant van de slaapmethode zorgt ervoor dat de huidige thread in slaap valt of stopt de uitvoering ervan tijdelijk voor het opgegeven aantal milliseconden (opgegeven in methode-argument). Tijdens het slapen verliest de draad echter de monitor niet en wordt het eigendom niet vergrendeld.
# 2) Slaapmethode variant # 2
Voorlopig ontwerp: openbare statische leegte slaap (lange millis, int nanos) gooit InterruptdException
Parameters:
beste ssh-client voor Windows 10
- millis => de duur in milliseconden waarvoor de draad moet slapen.
- nanos => extra nanoseconden waarvoor de draad kan slapen. Het bereik is 0 - 999999.
Winstwaarde: leegte
Gooit:
- IllegalArgumentException => als millis-waarde negatief is of nanos-waarde als buiten bereik.
- InterruptedException => als een andere thread de huidige thread onderbreekt. De onderbroken status van de thread wordt gewist wanneer deze uitzondering optreedt.
Omschrijving: Deze variant van de slaapmethode zorgt ervoor dat de thread deze aanroept om te slapen of tijdelijk de uitvoering ervan stopt voor het opgegeven aantal milliseconden. (eerste argument in een methodeaanroep). Bovendien gaf het ook het aantal nanoseconden (tweede argument in een methodeaanroep) om te slapen.
Merk op dat de nauwkeurigheid en precisie van de opgegeven tijd afhankelijk is van de systeemtimers en planners. Wanneer de draad slaapt, wordt het eigendom van het slot of de monitor niet gewijzigd.
Werking van Thread.Sleep-methode
Telkens wanneer een thread slaapt of wordt onderbroken, wordt dit gedaan door de planner. De methode Thread.sleep () communiceert met de thread scheduler zodat de scheduler ervoor kan zorgen dat de momenteel lopende thread verandert om te wachten op de status voor een bepaalde duur.
Zodra deze gespecificeerde tijd voorbij is, wordt de status van de thread gewijzigd in ‘uitvoerbaar’ zodat deze kan wachten tot de CPU verder gaat met de uitvoering.
De duur van de slaaptijd van de thread is dus afhankelijk van de planner en niet van de methode. Omdat de planner een onderdeel is van het besturingssysteem, speelt de OS-architectuur ook een rol bij de statuswijzigingen van de thread.
Nu we de methode Thread.sleep () in detail hebben gezien, moeten we enkele punten in gedachten houden bij het gebruik van deze methode.
Aanwijzingen zijn onder meer:
# 1) Thread.sleep () methode pauzeert altijd de uitvoering van de huidige thread.
#twee) De werkelijke duur dat de thread slaapt, is afhankelijk van de planners en systeemtimers.
Bijvoorbeeld, voor een zeer druk systeem kan de slaaptijd van de thread langer zijn dan de gespecificeerde tijd, terwijl deze voor het systeem dat niet zo druk is, min of meer in de buurt van een gespecificeerde tijd kan zijn.
dvd rippen en branden software gratis
# 3) Terwijl de draad slaapt, verliest hij geen sloten of monitoren die hij had verworven voordat hij ging slapen.
# 4) De huidige thread die in slaap is, kan worden onderbroken door een andere thread. In dit geval wordt 'InterruptedException' gegenereerd.
Thread.sleep Voorbeeld in Java
Laten we nu verder gaan met een voorbeeld dat de slaapmethode laat zien. Hier hebben we een threadklasse met een run () - methode. In de run () methode noemen we ‘Thread.sleep (1000)’. Vervolgens maken we in de hoofdfunctie twee instanties van deze thread, d.w.z. twee threads. We starten dan de draden.
In de uitvoer zien we dat aangezien beide threads actief zijn, de threads na elkaar worden gepland, d.w.z. wanneer de ene slaapt, is de andere actief.
Voorbeeld:
Uitgang:
Als we de uitvoer bekijken, zien we dat Thread_0 en Thread_1 om de beurt worden uitgevoerd.
Thread.sleep () met negatieve slaaptijdwaarde
Laten we vervolgens een ander voorbeeld van de methode Thread.sleep () demonstreren. Hier hebben we een speciaal geval van een negatieve slaaptijdwaarde beschouwd. Het programma is vergelijkbaar met het bovenstaande programma, maar de slaaptijd is -500.
Voorbeeld:
Uitgang:
Uit de uitvoer kunnen we zien dat de methode ‘IllegalArgumentException’ heeft gegenereerd omdat de negatieve waarde van de slaaptijd niet acceptabel is.
Veel Gestelde Vragen
V # 1) Hoe werkt thread-sleep in Java?
Antwoord: Wanneer de sleep () wordt aangeroepen op de thread met een gespecificeerde hoeveelheid tijd in milliseconden, stopt de thread met de uitvoering ervan. Het geeft de CPU uit handen. Dus, gedurende de tijd dat de thread slaapt, kunnen de andere threads de CPU gebruiken.
wie is de beste e-mailprovider
V # 2) Wat is yield () en sleep () in thread Java?
Antwoord: De thread sleep () methode zorgt ervoor dat de thread de CPU opgeeft en de uitvoering stopt. Terwijl deze thread slaapt, krijgen de andere threads CPU. Dit wordt gedaan door de planner.
De methode yield () zorgt er ook voor dat de thread de CPU-controle opgeeft wanneer deze wordt aangeroepen, maar de methode sleep () vertoont meer vastberaden gedrag in vergelijking met yield ().
V # 3) Hoe voorkom je dat een Java-thread in slaap valt?
Antwoord: We stoppen de Java-thread met slapen met behulp van de interrupt () - methode. Elke thread die wacht of slaapt, kan worden onderbroken door de methode interrupt () van de klasse Thread aan te roepen.
V # 4) Kunnen we een thread in Java doden?
Antwoord: Nee, de thread wordt niet gedood in Java. In plaats daarvan wordt de thread gestopt in Java. De thread wordt beëindigd en kan vervolgens netjes worden afgesloten. We gebruiken vaak een vluchtig booleaans veld dat periodiek wordt gecontroleerd op eventuele wijzigingen in waarden, zodat we de thread kunnen beëindigen.
V # 5) Waarom is sleep () een statische methode?
Antwoord: Wanneer we de methode sleep () aanroepen om de thread in slaapstand te brengen, noemen we deze altijd met de klasse Thread.
Bijvoorbeeld , Thread.sleep (1000);
De bovenstaande aanroep werkt in de huidige threadcontext en zet de huidige thread in slaapstand. We noemen de methode nooit met een specifieke threadinstantie. De methode is dus statisch.
Gevolgtrekking
In deze tutorial hebben we de sleep () -methode van threads in Java besproken. De methode Sleep () zorgt ervoor dat de huidige thread die wordt uitgevoerd, de uitvoering ervan stopzet voor een opgegeven hoeveelheid tijd die wordt opgegeven als argument voor de slaapmethode.
De systeemplanner werkt met de slaapmethode om de huidige thread in de wachtstand te plaatsen. Terwijl de draad slaapt, blijft hij de sloten of monitoren bezitten die hij heeft verworven. Wanneer we een negatieve waarde van slaaptijd doorgeven aan de slaapmethode, wordt ‘IllegalArgumentException’ gegenereerd.
Wanneer we een geldige waarde voor de slaaptijd doorgeven aan de methode sleep (), nemen de andere threads de beurt om uit te voeren terwijl de huidige thread slaapt.
Kijk hier om AZ van Java-trainingshandleidingen hier te zien.
Aanbevolen literatuur
- Multithreading in Java - Tutorial met voorbeelden
- Multithreading in C ++ met voorbeelden
- Java gesynchroniseerd: wat is threadsynchronisatie in Java
- Java-threads met methoden en levenscyclus
- Zelfstudie over Java String | Java String-methoden met voorbeelden
- Hoe de Java toString-methode te gebruiken?
- TreeMap in Java - Tutorial met Java TreeMap-voorbeelden
- JAVA-zelfstudie voor beginners: 100+ praktische Java-videotutorials