Java Thread-klassen giver de to varianter af sleep()-metoden. Først accepterer man kun et argument, mens den anden variant accepterer to argumenter. Metoden sleep() bruges til at standse arbejdet med en tråd i et givet tidsrum. Den tid, indtil tråden forbliver i sovetilstand, er kendt som trådens sovetid. Efter at sovetiden er forbi, starter tråden sin udførelse fra hvor den er gået.
Sleep()-metodens syntaks:
Følgende er syntaksen for sleep()-metoden.
public static void sleep(long mls) throws InterruptedException public static void sleep(long mls, int n) throws InterruptedException
Metoden sleep() med den ene parameter er den native metode, og implementeringen af den native metode udføres i et andet programmeringssprog. De andre metoder med de to parametre er ikke den native metode. Det vil sige, at dens implementering udføres i Java. Vi kan få adgang til sleep()-metoderne ved hjælp af Thread-klassen, da signaturen for sleep()-metoderne indeholder det statiske nøgleord. Den indfødte, såvel som den ikke-indfødte metode, kaster en markeret undtagelse. Derfor kan enten try-catch block eller throws søgeordet fungere her.
Thread.sleep()-metoden kan bruges med enhver tråd. Det betyder, at enhver anden tråd eller hovedtråden kan påberåbe sig sleep()-metoden.
Parametre:
Følgende er de parametre, der bruges i sleep()-metoden.
mls: Tiden i millisekunder er repræsenteret af parameteren mls. Varigheden, hvori tråden vil sove, er givet af metoden sleep().
n: Det viser den ekstra tid, op til hvilken programmøren eller udvikleren ønsker, at tråden skal være i dvaletilstand. Området for n er fra 0 til 999999.
Metoden returnerer ikke noget.
Vigtige punkter at huske om Sleep()-metoden
Når Thread.sleep()-metoderne udføres, stopper den altid udførelsen af den aktuelle tråd.
Hver gang en anden tråd afbryder, mens den aktuelle tråd allerede er i dvaletilstand, kastes InterruptedException.
Hvis systemet, der udfører trådene, er optaget, så er den faktiske sovetid for tråden generelt mere sammenlignet med den tid, der er gået i argumenter. Men hvis systemet, der udfører sleep()-metoden har mindre belastning, så er den faktiske sovetid for tråden næsten lig med den tid, der er gået i argumentet.
Eksempel på sleep()-metoden i Java: på den brugerdefinerede tråd
Det følgende eksempel viser, hvordan man kan bruge sleep()-metoden på den brugerdefinerede tråd.
Filnavn: 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 godt ved, bliver der kun udført én tråd ad gangen. Hvis du sover en tråd i det angivne tidsrum, samler trådplanlæggeren en anden tråd op og så videre.
Eksempel på sleep()-metoden i Java: på hovedtråden
Filnavn: TestSleepMethod2.java
// 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;>
Eksempel på sleep()-metoden i Java: Når sovetiden er -ive
Følgende eksempel kaster undtagelsen IllegalArguementException, når tiden til at sove er negativ.
Filnavn: 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;>
5;>5;>5;i++){>