logo

Thread.sleep() i Java med exempel

Java Thread-klassen tillhandahåller de två varianterna av sleep()-metoden. Först accepterar man bara ett argument, medan den andra varianten accepterar två argument. Metoden sleep() används för att stoppa bearbetningen av en tråd under en viss tid. Tiden fram till vilken tråden förblir i viloläge kallas trådens sovtid. Efter att sovtiden är över, börjar tråden sitt utförande där den har lämnat.

Sleep()-metodens syntax:

Följande är syntaxen för sleep()-metoden.

 public static void sleep(long mls) throws InterruptedException public static void sleep(long mls, int n) throws InterruptedException 

Metoden sleep() med den ena parametern är den ursprungliga metoden, och implementeringen av den ursprungliga metoden utförs i ett annat programmeringsspråk. De andra metoderna som har de två parametrarna är inte den ursprungliga metoden. Det vill säga att dess implementering sker i Java. Vi kan komma åt sleep()-metoderna med hjälp av klassen Thread, eftersom signaturen för sleep()-metoderna innehåller det statiska nyckelordet. Den infödda, såväl som den icke-infödda metoden, kastar ett markerat undantag. Därför kan antingen try-catch-blocket eller nyckelordet throws fungera här.

Metoden Thread.sleep() kan användas med vilken tråd som helst. Det betyder att vilken annan tråd eller huvudtråd som helst kan anropa sleep()-metoden.

Parametrar:

Följande är parametrarna som används i sleep()-metoden.

mls: Tiden i millisekunder representeras av parametern mls. Varaktigheten som tråden kommer att sova under ges av metoden sleep().

n: Den visar den extra tid fram till vilken programmeraren eller utvecklaren vill att tråden ska vara i viloläge. Intervallet för n är från 0 till 999999.

Metoden returnerar ingenting.

Viktiga punkter att komma ihåg om Sleep()-metoden

Närhelst Thread.sleep()-metoderna körs, stoppar den alltid körningen av den aktuella tråden.

När en annan tråd gör avbrott medan den aktuella tråden redan är i viloläge, kastas avbrottsundantaget.

Om systemet som kör trådarna är upptaget, är den faktiska sovtiden för tråden generellt sett längre jämfört med tiden som gått i argument. Men om systemet som kör sleep()-metoden har mindre belastning, är den faktiska sovtiden för tråden nästan lika med tiden som gått i argumentet.

Exempel på metoden sleep() i Java : på den anpassade tråden

Följande exempel visar hur man kan använda metoden sleep() på den anpassade tråden.

Filnamn: TestSleepMethod1.java

 class TestSleepMethod1 extends Thread{ public void run(){ for(int i=1;i<5;i++){ 500 the thread will sleep for milli seconds try{thread.sleep(500);}catch(interruptedexception e){system.out.println(e);} system.out.println(i); } public static void main(string args[]){ testsleepmethod1 t1="new" testsleepmethod1(); t2="new" t1.start(); t2.start(); < pre> <p> <strong>Output:</strong> </p> <pre> 1 1 2 2 3 3 4 4 </pre> <p>As you know well that at a time only one thread is executed. If you sleep a thread for the specified time, the thread scheduler picks up another thread and so on.</p> <h3>Example of the sleep() Method in Java : on the main thread</h3> <p> <strong>FileName:</strong> TestSleepMethod2.java</p> <pre> // important import statements import java.lang.Thread; import java.io.*; public class TestSleepMethod2 { // main method public static void main(String argvs[]) { try { for (int j = 0; j <5; 1 1000 j++) { the main thread sleeps for milliseconds, which is sec whenever loop runs thread.sleep(1000); displaying value of variable system.out.println(j); } catch (exception expn) catching exception system.out.println(expn); < pre> <p> <strong>Output:</strong> </p> <pre> 0 1 2 3 4 </pre> <h3>Example of the sleep() Method in Java: When the sleeping time is -ive</h3> <p>The following example throws the exception IllegalArguementException when the time for sleeping is negative.</p> <p> <strong>FileName:</strong> TestSleepMethod3.java</p> <pre> // important import statements import java.lang.Thread; import java.io.*; public class TestSleepMethod3 { // main method public static void main(String argvs[]) { // we can also use throws keyword followed by // exception name for throwing the exception try { for (int j = 0; j <5; j++) { it throws the exception illegalargumentexception as time is -ive which -100 thread.sleep(-100); displaying variable's value system.out.println(j); } catch (exception expn) iscaught here system.out.println(expn); < pre> <p> <strong>Output:</strong> </p> <pre> java.lang.IllegalArgumentException: timeout value is negative </pre> <hr></5;></pre></5;></pre></5;i++){>

Som du väl vet att åt gången körs bara en tråd. Om du sover en tråd under den angivna tiden, plockar trådschemaläggaren upp en annan tråd och så vidare.

Exempel på metoden sleep() i Java: på huvudtråden

Filnamn: TestSleepMethod2.java

klustring
 // important import statements import java.lang.Thread; import java.io.*; public class TestSleepMethod2 { // main method public static void main(String argvs[]) { try { for (int j = 0; j <5; 1 1000 j++) { the main thread sleeps for milliseconds, which is sec whenever loop runs thread.sleep(1000); displaying value of variable system.out.println(j); } catch (exception expn) catching exception system.out.println(expn); < pre> <p> <strong>Output:</strong> </p> <pre> 0 1 2 3 4 </pre> <h3>Example of the sleep() Method in Java: When the sleeping time is -ive</h3> <p>The following example throws the exception IllegalArguementException when the time for sleeping is negative.</p> <p> <strong>FileName:</strong> TestSleepMethod3.java</p> <pre> // important import statements import java.lang.Thread; import java.io.*; public class TestSleepMethod3 { // main method public static void main(String argvs[]) { // we can also use throws keyword followed by // exception name for throwing the exception try { for (int j = 0; j <5; j++) { it throws the exception illegalargumentexception as time is -ive which -100 thread.sleep(-100); displaying variable\'s value system.out.println(j); } catch (exception expn) iscaught here system.out.println(expn); < pre> <p> <strong>Output:</strong> </p> <pre> java.lang.IllegalArgumentException: timeout value is negative </pre> <hr></5;></pre></5;>

Exempel på metoden sleep() i Java: När sovtiden är -ive

Följande exempel ger undantaget IllegalArguementException när tiden för att sova är negativ.

Filnamn: TestSleepMethod3.java

 // important import statements import java.lang.Thread; import java.io.*; public class TestSleepMethod3 { // main method public static void main(String argvs[]) { // we can also use throws keyword followed by // exception name for throwing the exception try { for (int j = 0; j <5; j++) { it throws the exception illegalargumentexception as time is -ive which -100 thread.sleep(-100); displaying variable\'s value system.out.println(j); } catch (exception expn) iscaught here system.out.println(expn); < pre> <p> <strong>Output:</strong> </p> <pre> java.lang.IllegalArgumentException: timeout value is negative </pre> <hr></5;>