logo

Thread.sleep() v Javi s primeri

Razred Java Thread ponuja dve različici metode spanja(). Prva sprejme le en argument, medtem ko druga varianta sprejme dva argumenta. Metoda sleep() se uporablja za zaustavitev delovanja niti za določen čas. Čas, do katerega nit ostane v stanju spanja, je znan kot čas mirovanja niti. Ko se čas mirovanja konča, se nit začne izvajati od tam, kjer je zapustila.

Sintaksa metode sleep():

Sledi sintaksa metode spanja().

java seznam v polje
 public static void sleep(long mls) throws InterruptedException public static void sleep(long mls, int n) throws InterruptedException 

Metoda sleep() z enim parametrom je izvorna metoda, implementacija izvorne metode pa je dosežena v drugem programskem jeziku. Druge metode, ki imajo oba parametra, niso izvorne metode. To pomeni, da je njegova implementacija dosežena v Javi. Do metod sleep() lahko dostopamo s pomočjo razreda Thread, saj podpis metod sleep() vsebuje ključno besedo static. Domača in tudi tujerodna metoda vržeta označeno izjemo. Zato lahko tu deluje blok poskusi-ulovi ali ključna beseda throws.

Metodo Thread.sleep() lahko uporabite s katero koli nitjo. To pomeni, da lahko katera koli druga nit ali glavna nit prikliče metodo spanja().

Parametri:

Sledijo parametri, uporabljeni v metodi sleep().

prednosti in slabosti tehnologije

mls: Čas v milisekundah je predstavljen s parametrom mls. Trajanje, v katerem bo nit spala, je podano z metodo sleep().

n: Prikazuje dodatni čas, do katerega programer ali razvijalec želi, da je nit v stanju spanja. Razpon n je od 0 do 999999.

Metoda ne vrne ničesar.

Pomembne točke, ki si jih morate zapomniti o metodi Sleep().

Kadarkoli se izvede metoda Thread.sleep(), vedno ustavi izvajanje trenutne niti.

Kadar koli druga nit prekine, medtem ko je trenutna nit že v načinu mirovanja, se sproži InterruptedException.

Če je sistem, ki izvaja niti, zaseden, je dejanski čas mirovanja niti na splošno večji od časa, pretečenega v argumentih. Če pa ima sistem, ki izvaja metodo sleep(), manjšo obremenitev, potem je dejanski čas mirovanja niti skoraj enak času, ki je bil posredovan v argumentu.

Primer metode sleep() v Javi: na niti po meri

Naslednji primer prikazuje, kako lahko uporabite metodo sleep() v niti po meri.

sort arraylist v Javi

Ime datoteke: TestSleepMethod1.java

če parafraziram Rudyarda Kiplinga
 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++){>

Kot dobro veste, se naenkrat izvaja samo ena nit. Če nit spite določen čas, razporejevalnik niti izbere drugo nit in tako naprej.

Primer metode spanja() v Javi: na glavni niti

Ime datoteke: 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;>

Primer metode spanja() v Javi: Ko je čas mirovanja -ive

Naslednji primer vrže izjemo IllegalArguementException, ko je čas za spanje negativen.

Ime datoteke: 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;>