thread sleep thread sleep method java with examples
I denne veiledningen vil vi diskutere metoden Sleep Sleep () i Java. Vi vil se hvordan Thread.Sleep () -metoden fungerer ved hjelp av eksempler:
De java.lang.Thread.sleep (lang milis) metoden er metoden som tilbys av trådklassen som setter den gjeldende tråden i dvale. Vi vil spesifisere søvntiden som et argument for søvnmetoden.
=> Ta en titt på Java Beginners Guide her.
Hva du vil lære:
Tråd Sleep () Metode i Java
Trådklassen til Java gir to varianter av søvnmetoden.
Prototypen til begge variantene av sleep () -metoden er beskrevet nedenfor.
Nr. 1) Søvnmetodevariant nr. 1
Prototype: offentlig statisk tomrom søvn (lange millis) kaster InterruptedException
Parametere: millis => varigheten i millisekunder som tråden sover i.
Returverdi: tomrom
Kaster:
- IllegalArgumentException => hvis millis er negativt
- InterruptedException => hvis noen annen tråd avbryter gjeldende tråd. Når dette unntaket oppstår, fjernes den avbrutte statusen til tråden.
Beskrivelse: Denne variasjonen av søvnmetoden gjør at den gjeldende tråden går i dvale eller stopper utførelsen midlertidig for det angitte antall millisekunder (gitt i metodeargumentet). Mens du sover, mister ikke tråden skjermen eller låser eierskapet.
Nr. 2) Søvnmetodevariant nr. 2
Prototype: offentlig statisk ugyldig søvn (lange millis, int nanos) kaster InterruptdException
Parametere:
java utvikler intervju spørsmål og svar for nybegynnere
- millis => varigheten i millisekunder som tråden må sove i.
- nanos => ekstra nanosekunder som tråden kan sove i. Rekkevidden er 0 - 999999.
Returverdi: tomrom
Kaster:
- IllegalArgumentException => hvis millisverdien er negativ eller nanosverdien hvis den er utenfor området.
- InterruptedException => hvis noen annen tråd avbryter gjeldende tråd. Den avbrutte statusen til tråden slettes når dette unntaket oppstår.
Beskrivelse: Denne varianten av søvnmetoden får tråden til å påkalle den i dvale eller midlertidig stoppe utførelsen for det gitte antall millisekunder. (første argument i en metodeanrop). Dessuten ga den også antall nanosekunder (andre argument i en metodeanrop) for å sove.
Merk at nøyaktigheten og presisjonen til den angitte tiden avhenger av systemtimerne og planleggerne. Når tråden sover, endres ikke eierskapet til låsen eller skjermen.
Arbeid av tråd. Sovemetode
Hver gang en tråd sover eller er suspendert, gjøres det av planleggeren. Metoden Thread.sleep () kommuniserer med trådplanleggeren slik at planleggeren kan føre til at den nåværende kjørende tråden endres og venter på tilstanden i en gitt varighet.
Når denne spesifiserte tiden er over, blir tilstanden til tråden endret til 'kjørbar' slik at den kan vente på at CPUen skal fortsette med utførelsen.
Dermed avhenger varigheten for hvor lenge tråden sover av planleggeren og ikke metoden. Siden planleggeren er en del av operativsystemet, spiller OS-arkitekturen også en rolle i tilstandsendringene til tråden.
Nå som vi har sett Thread.sleep () -metoden i detalj, bør vi huske noen av poengene når vi bruker denne metoden.
Pekere inkluderer:
enhetstesting integrasjonstesting systemtesting
#1) Thread.sleep () -metoden stopper alltid kjøringen av den gjeldende tråden.
#to) Den faktiske varigheten som tråden sover i, avhenger av planleggere og systemtidsur.
For eksempel, for et veldig travelt system kan søvntiden til tråden være lengre enn den angitte, mens det for systemet som ikke er så opptatt, kan være mer eller mindre nær en spesifisert tid.
# 3) Mens tråden sover, mister den ingen låser eller skjermer den hadde fått før den sov.
# 4) Den nåværende tråden som er i dvale kan avbrytes av en hvilken som helst annen tråd. I dette tilfellet blir 'InterruptedException' kastet.
Thread.sleep Eksempel i Java
La oss nå gå videre til et eksempel som demonstrerer søvnmetoden. Her har vi en trådklasse som har en run () -metode. I metoden run () kaller vi ‘Thread.sleep (1000)’. Så i hovedfunksjonen lager vi to forekomster av denne tråden, dvs. to tråder. Vi starter deretter trådene.
I utgangen legger vi merke til at når begge trådene kjører, er trådene planlagt etter hverandre, dvs. når den ene sover den andre kjører.
Eksempel:
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(); } }
Produksjon:
Når vi observerer utdataene, finner vi at Thread_0 og Thread_1 bytter på å utføre.
Thread.sleep () med negativ sovetid
Deretter skal vi demonstrere et annet eksempel på Thread.sleep () -metoden. Her har vi vurdert et spesielt tilfelle av en negativ søvnverdi. Programmet ligner på ovennevnte program, men søvntiden er -500.
Eksempel:
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(); } }
Produksjon:
hvordan åpne .jar med java
Fra produksjonen kan vi se at metoden har kastet ‘IllegalArgumentException’ ettersom den negative verdien av søvntiden ikke er akseptabel.
ofte stilte spørsmål
Q # 1) Hvordan fungerer trådsøvn i Java?
Svar: Når søvn () kalles på tråden med en spesifisert tid i millisekunder, slutter tråden sin utførelse. Det gir fra seg prosessoren. Dermed, i løpet av varigheten når tråden sover, kan de andre trådene bruke CPU.
Q # 2) Hva er yield () og sleep () i tråd Java?
Svar: Sleep () -metoden for tråden får tråden til å gi fra seg CPU-en og avslutte kjøringen. Mens denne tråden sover, får de andre trådene CPU. Dette gjøres av planleggeren.
Utbyttet () -metoden får også tråden til å gi opp CPU-kontrollen når den kalles, men metoden sleep () viser mer bestemt oppførsel sammenlignet med utbytte ().
Sp # 3) Hvordan stopper du en Java-tråd fra å gå i dvale?
Svar: Vi stopper Java-tråden fra å sove ved hjelp av interrupt () -metoden. Enhver tråd som venter eller sover, kan avbrytes ved å påkalle interrupt () -metoden i trådklassen.
Q # 4) Kan vi drepe en tråd i Java?
Svar: Nei, tråden blir ikke drept i Java. I stedet stoppes tråden i Java. Tråden avsluttes og kan deretter lukkes elegant. Vi bruker ofte et flyktig boolsk felt som med jevne mellomrom kontrolleres for eventuelle endringer i verdier, slik at vi kan avslutte tråden.
Q # 5) Hvorfor er søvn () en statisk metode?
Svar: Når du kaller sleep () -metoden for å sette tråden i dvale, kaller vi den alltid ved hjelp av Thread-klassen.
For eksempel , Thread.sleep (1000);
Ovennevnte samtale fungerer i gjeldende trådkontekst og setter den aktuelle tråden i dvale. Vi kaller aldri metoden ved hjelp av en bestemt trådforekomst. Dermed er metoden statisk.
Konklusjon
I denne opplæringen har vi diskutert sleep () -metoden til tråder i Java. Sleep () -metoden fører til at den gjeldende tråden som kjøres, slutter å kjøre den i en spesifisert tid som er gitt som et argument for hvilemetoden.
Systemplanleggeren fungerer med hvilemetoden for å sette gjeldende tråd i ventetilstand. Mens tråden sover fortsetter den å ha låsene eller skjermene den har anskaffet. Når vi gir en negativ verdi av søvntid til søvnmetoden, kaster den ‘IllegalArgumentException’.
Når vi overfører en gyldig hviletidsverdi til sleep () -metoden, tar de andre trådene turen til å utføre mens den nåværende tråden sover.
=> Sjekk her for å se AZ av Java-opplæringsveiledninger her.
Anbefalt lesing
- Multithreading In Java - Opplæring med eksempler
- Multitrading i C ++ med eksempler
- Java Synchronized: Hva er trådsynkronisering i Java
- Java-tråder med metoder og livssyklus
- Java String Tutorial | Java strengmetoder med eksempler
- Hvordan bruke Java toString Method?
- TreeMap In Java - Veiledning med Java TreeMap-eksempler
- JAVA-opplæring for nybegynnere: 100+ praktiske Java-videoveiledninger