thread sleep thread sleep method java with examples
I den här självstudien kommer vi att diskutera metoden Trådssömn () i Java. Vi kommer att se hur Thread.Sleep () -metoden fungerar med hjälp av exempel:
De java.lang.Thread.sleep (lång milis) metoden är den metod som tillhandahålls av Thread-klassen som sätter den igånggående tråden i viloläge. Vi kommer att specificera sömntiden som ett argument för sömnmetoden.
=> Ta en titt på Java-nybörjarguiden här.
Vad du kommer att lära dig:
Tråd sömn () Metod i Java
Trådklassen i Java ger två varianter av sömnmetoden.
Prototypen för båda varianterna av sleep () -metoden beskrivs nedan.
# 1) Sovmetodvariant # 1
Prototyp: offentlig statisk tomrums sömn (lång milis) kastar InterruptedException
Parametrar: millis => varaktigheten i millisekunder för vilken tråden sover.
Returvärde: tomhet
Kastar:
- IllegalArgumentException => om millis är negativt
- InterruptedException => om någon annan tråd avbryter den aktuella tråden. När detta undantag inträffar raderas trådens avbrutna status.
Beskrivning: Denna variant av sömnmetod gör att den aktuella tråden går i viloläge eller stoppar tillfälligt körningen för det angivna antalet millisekunder (tillhandahålls i metodargumentet). Men när du sover, förlorar inte tråden monitorn eller låser äganderätten.
# 2) Sovmetodvariant # 2
Prototyp: offentlig statisk ogiltig sömn (lång milis, int nanos) kastar InterruptdException
Parametrar:
hur man använder sortera i java
- millis => varaktigheten i millisekunder som tråden måste sova.
- nanos => ytterligare nanosekunder för vilka tråden kan sova. Intervallet är 0 - 999999.
Returvärde: tomhet
Kastar:
- IllegalArgumentException => om millisvärdet är negativt eller nanovärde om det är utanför intervallet.
- InterruptedException => om någon annan tråd avbryter den aktuella tråden. Trådens avbrutna status rensas när detta undantag inträffar.
Beskrivning: Denna variant av sömnmetoden gör att tråden anropar den till viloläge eller tillfälligt stoppar dess körning under det angivna antalet millisekunder. (första argumentet i ett metodanrop). Dessutom gav den också antalet nanosekunder (andra argumentet i ett metodanrop) för att sova.
Observera att noggrannheten och precisionen för den angivna tiden beror på systemtimern och schemaläggaren. När tråden sover ändras inte äganderätten till låset eller bildskärmen.
Bearbetning av tråd. Sömnmetod
När en tråd sover eller är avstängd görs det av schemaläggaren. Metoden Thread.sleep () kommunicerar med trådschemaläggaren så att schemaläggaren kan göra att den nuvarande tråden ändras för att vänta på tillståndet under en given varaktighet.
När den angivna tiden är över ändras trådens tillstånd till 'körbar' så att den kan vänta på att CPU ska fortsätta med körningen.
Varaktigheten för hur länge tråden sover beror således på schemaläggaren och inte på metoden. Eftersom schemaläggaren är en del av operativsystemet spelar OS-arkitekturen också en roll i trådens tillståndsändringar.
Nu när vi har sett Thread.sleep () -metoden i detalj bör vi ha några av poängen i åtanke när vi använder den här metoden.
Pekare inkluderar:
# 1) Thread.sleep () -metoden pausar alltid körningen av den aktuella tråden.
#två) Den faktiska varaktigheten för vilken tråden sover beror på schemaläggare och systemtimers.
Till exempel, för ett mycket upptaget system kan trådens sömntid vara längre än den angivna, medan det för systemet som inte är så upptaget kan vara mer eller mindre nära en angiven tid.
affärsanalytiker teknisk intervju frågor och svar
# 3) Medan tråden sover, förlorar den inga lås eller bildskärmar som den förvärvat innan den sov.
# 4) Den nuvarande tråden som är i sömn kan avbrytas av vilken annan tråd som helst. I det här fallet kastas 'InterruptedException'.
Thread.sleep Exempel i Java
Låt oss gå vidare till ett exempel som visar sömnmetoden. Här har vi en trådklass som har en run () -metod. I metoden run () kallar vi 'Thread.sleep (1000)'. Sedan i huvudfunktionen skapar vi två instanser av den här tråden, dvs två trådar. Vi startar sedan trådarna.
I utgången märker vi att när båda trådarna körs är trådarna schemalagda efter varandra, det vill säga när den andra sover kör den andra.
Exempel:
class SleepThread extends Thread { //run method for thread public void run() { for(int i=1;i<5;i++) { try { //call sleep method of thread Thread.sleep(1000); }catch(InterruptedException e){System.out.println(e);} //print current thread instance with loop variable System.out.println(Thread.currentThread().getName() + ' : ' + i); } } } class Main{ public static void main(String args()) { //create two thread instances SleepThread thread_1 = new SleepThread(); SleepThread thread_2 = new SleepThread(); //start threads one by one thread_1.start(); thread_2.start(); } }
Produktion:
När vi observerar utdata, finner vi att Thread_0 och Thread_1 turas om att utföra.
Thread.sleep () med negativt sömntidsvärde
Låt oss sedan demonstrera ett annat exempel på metoden Thread.sleep (). Här har vi övervägt ett speciellt fall med ett negativt sömntidsvärde. Programmet liknar ovanstående program men den angivna sömntiden är -500.
Exempel:
class SleepThread extends Thread { public void run() { for(int i=1;i<5;i++) { try { //call sleep method with negative value of time Thread.sleep(-500); }catch(InterruptedException e){System.out.println(e);} System.out.println(i); } } } class Main{ public static void main(String args()) { //create two thread instances SleepThread t1=new SleepThread(); SleepThread t2=new SleepThread(); //start the threads one by one t1.start(); t2.start(); } }
Produktion:
Från produktionen kan vi se att metoden har kastat 'IllegalArgumentException' eftersom det negativa värdet av sömntid inte är acceptabelt.
Vanliga frågor
F # 1) Hur fungerar trådsömn i Java?
Svar: När sömnen () anropas på tråden med en viss tid i millisekunder upphör tråden med att köras. Det avstår från CPU: n. Således, under den tid som tråden sover, kan de andra trådarna använda CPU.
hur man öppnar .jar med java
F # 2) Vad är yield () och sleep () i tråd Java?
Svar: Trådens sömn () -metod gör att tråden avstår från CPU: n och upphör med körningen. Medan denna tråd sover, förvärvar de andra trådarna CPU. Detta görs av schemaläggaren.
Utbytet () -metoden får också att tråden ger upp CPU-kontrollen när den anropas, men metoden sleep () uppvisar mer bestämt beteende jämfört med utbyte ().
F # 3) Hur hindrar du en Java-tråd från att somna?
Svar: Vi stoppar Java-tråden från att sova med interrupt () -metoden. Varje tråd som väntar eller sover kan avbrytas genom att anropa interrupt () -metoden i trådklassen.
F # 4) Kan vi döda en tråd i Java?
Svar: Nej, tråden dödas inte i Java. Istället stoppas tråden i Java. Tråden avslutas och kan sedan stängas graciöst. Vi använder ofta ett flyktigt booleskt fält som regelbundet kontrolleras för eventuella förändringar i värden, så att vi kan avsluta tråden.
F # 5) Varför är sömn () en statisk metod?
Svar: När vi anropar sleep () -metoden för att sätta tråden i sömn kallar vi den alltid med hjälp av Thread-klassen.
Till exempel , Thread.sleep (1000);
Ovanstående samtal fungerar i nuvarande trådkontext och sätter den aktuella tråden i viloläge. Vi kallar aldrig metoden med en specifik trådinstans. Således är metoden statisk.
Slutsats
I denna handledning har vi diskuterat sleep () -metoden för trådar i Java. Sleep () -metoden får den nuvarande tråden som körs att upphöra med körningen under en viss tid som tillhandahålls som ett argument för sömnmetoden.
Systemschemaläggaren arbetar med viloläge för att sätta den aktuella tråden i vänteläge. Medan tråden sover fortsätter den att ha de lås eller bildskärmar som den har fått. När vi skickar ett negativt värde av sömntid till sömnmetoden, kastar det ”IllegalArgumentException”.
När vi skickar ett giltigt sömntidsvärde till sleep () -metoden tar de andra trådarna turen att köra medan den aktuella tråden sover.
=> Kolla här för att se A-Z av Java-utbildningar här.
Rekommenderad läsning
- Multitrådning i Java - Handledning med exempel
- Multitrådning i C ++ med exempel
- Java Synchronized: Vad är trådsynkronisering i Java
- Java-trådar med metoder och livscykel
- Java String Tutorial | Java-strängmetoder med exempel
- Hur man använder Java toString Method?
- TreeMap In Java - Handledning med Java TreeMap-exempel
- JAVA-handledning för nybörjare: 100+ praktiska Java-videohandledning