thread sleep thread sleep method java with examples
I denne vejledning diskuterer vi metoden Trådsøvn () i Java. Vi vil se, hvordan Thread.Sleep () -metoden fungerer ved hjælp af eksempler:
Det java.lang.Thread.sleep (lange millis) metode er den metode, der leveres af klasse Thread, der sætter den aktuelt kørende tråd i dvale. Vi specificerer søvntiden som et argument for søvnmetoden.
=> Se på Java Beginners Guide her.
Hvad du lærer:
Tråd Sleep () Metode i Java
Trådklassen i Java giver to varianter af søvnmetoden.
Prototypen for begge varianter af sleep-metoden er beskrevet nedenfor.
# 1) Sovemetode Variant nr. 1
Prototype: offentlig statisk ugyldig søvn (lange millis) kaster InterruptedException
Parametre: millis => varigheden af tiden i millisekunder, som tråden sover i.
Returværdi: ugyldig
Kaster:
- IllegalArgumentException => hvis millis er negativ
- InterruptedException => hvis nogen anden tråd afbryder den aktuelle tråd. Når denne undtagelse opstår, ryddes trådens afbrudte status.
Beskrivelse: Denne variation af søvnmetode får den aktuelle tråd til at sove eller midlertidigt stopper dens udførelse i det givne antal millisekunder (angivet i metodeargumentet). Mens du sover, mister tråden imidlertid ikke skærmen eller låser ejerskabet.
# 2) Søvnmetodevariant nr. 2
Prototype: offentlig statisk ugyldig søvn (lange millis, int nanos) kaster InterruptdException
Parametre:
hvordan man skriver brugerhistorier og acceptkriterier
- millis => varigheden i millisekunder, som tråden skal sove i.
- nanos => yderligere nanosekunder, som tråden kan sove i. Området er 0 - 999999.
Returværdi: ugyldig
Kaster:
- IllegalArgumentException => hvis millisværdien er negativ eller nanoværdien, hvis den er uden for området.
- InterruptedException => hvis en anden tråd afbryder den aktuelle tråd. Trådens afbrudte status ryddes, når denne undtagelse forekommer.
Beskrivelse: Denne variant af søvnmetoden får tråden til at påkalde den i dvale eller midlertidigt stoppe dens udførelse i det givne antal millisekunder. (første argument i et metodekald). Desuden gav det også antallet af nanosekunder (andet argument i et metodekald) til at sove.
Bemærk, at nøjagtigheden og nøjagtigheden af den angivne tid afhænger af systemtimerne og planlæggerne. Når tråden sover, ændres ejerskabet til låsen eller skærmen ikke.
Arbejde af tråd. Søvnmetode
Hver gang en tråd sover eller suspenderes, gøres den af planlæggeren. Metoden Thread.sleep () kommunikerer med trådplanlæggeren, så planlæggeren kan få den aktuelt kørende tråd til at vente på tilstanden i en given varighed.
Når denne angivne tid er forbi, ændres trådens tilstand til 'kørbar', så den kan vente på, at CPU'en fortsætter med udførelsen.
Varigheden for hvor længe tråden sover afhænger således af planlæggeren og ikke af metoden. Da planlæggeren er en del af operativsystemet, spiller OS-arkitekturen også en rolle i trådændringens tilstandsændringer.
Nu hvor vi har set Thread.sleep () -metoden i detaljer, skal vi huske nogle af punkterne, når vi bruger denne metode.
forskel mellem soapui og soapui pro
Markører inkluderer:
# 1) Thread.sleep () -metoden stopper altid udførelsen af den aktuelle tråd.
#to) Den faktiske varighed, som tråden sover i, afhænger af planlæggere og systemtimere.
For eksempel, for et meget travlt system kan søvntiden for tråden være længere end den specificerede, mens det for det system, der ikke er så travlt, kan være mere eller mindre tæt på et bestemt tidspunkt.
# 3) Mens tråden sover, mister den ikke nogen låse eller skærme, den havde erhvervet inden den sov.
# 4) Den aktuelle tråd, der er i dvale, kan afbrydes af enhver anden tråd. I dette tilfælde kastes 'InterruptedException'.
Tråd.soveeksempel i Java
Lad os nu gå videre til et eksempel, der demonstrerer søvnmetoden. Her har vi en trådklasse, der har en run () -metode. I metoden run () kalder vi 'Thread.sleep (1000)'. Derefter opretter vi to forekomster af denne tråd i hovedfunktionen, dvs. to tråde. Vi starter derefter trådene.
I output bemærker vi, at da begge tråde kører, er trådene planlagt efter hinanden, dvs. når den ene sover, kører den anden.
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(); } }
Produktion:
Når vi observerer output, finder vi, at Thread_0 og Thread_1 skiftes til at udføre.
Thread.sleep () med negativ sleep time-værdi
Lad os derefter demonstrere et andet eksempel på metoden Thread.sleep (). Her har vi overvejet et specielt tilfælde med en negativ værdi for søvntid. Programmet svarer til ovenstående program, men den oplagte søvntid 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(); } }
Produktion:
Fra output kan vi se, at metoden har kastet 'IllegalArgumentException', da den negative værdi af søvntid ikke er acceptabel.
Ofte stillede spørgsmål
Q # 1) Hvordan fungerer thread sleep i Java?
Svar: Når søvn () kaldes på tråden med en bestemt tid i millisekunder, ophører tråden med at udføre den. Det opgiver CPU'en. Således kan de andre tråde i løbet af den tid, hvor tråden sover, bruge CPU'en.
Q # 2) Hvad er yield () og sleep () i tråd Java?
Svar: Sleep () -metoden for tråd får tråden til at opgive CPU'en og standse udførelsen. Mens denne tråd sover, erhverver de andre tråde CPU. Dette gøres af planlæggeren.
Udbyttet () -metoden får også tråden til at opgive CPU-kontrollen, når den kaldes, men metoden sleep () udviser mere bestemt adfærd sammenlignet med udbytte ().
Spørgsmål nr. 3) Hvordan stopper du en Java-tråd fra at gå i dvale?
Svar: Vi stopper Java-tråden i at sove ved hjælp af interrupt () -metoden. Enhver tråd, der venter eller sover, kan afbrydes ved at påkalde interrupt () -metoden i trådklassen.
Q # 4) Kan vi dræbe en tråd i Java?
Svar: Nej, tråden dræbes ikke i Java. I stedet stoppes tråden i Java. Tråden afsluttes og kan derefter lukkes yndefuldt. Vi bruger ofte et flygtigt boolesk felt, der regelmæssigt kontrolleres for ændringer i værdier, så vi kan afslutte tråden.
Spørgsmål nr. 5) Hvorfor er søvn () en statisk metode?
Svar: Når vi kalder sleep () -metoden for at sætte tråden i dvale, kalder vi den altid ved hjælp af Thread-klassen.
For eksempel , Tråd. Søvn (1000);
Ovenstående opkald fungerer i den aktuelle trådkontekst og sætter den aktuelle tråd i dvale. Vi kalder aldrig metoden ved hjælp af en bestemt trådforekomst. Metoden er således statisk.
Konklusion
I denne vejledning har vi diskuteret sleep () -metoden for tråde i Java. Sleep () -metoden får den aktuelle tråd, der udføres, til at ophøre med dens eksekvering i et bestemt tidsrum, der er angivet som et argument til sleep-metoden.
Systemplanlæggeren arbejder med dvalemetoden for at sætte den aktuelle tråd i ventetilstand. Mens tråden sover, fortsætter den med at have de låse eller skærme, den har erhvervet. Når vi sender en negativ værdi af søvntid til søvnmetoden, kaster den 'IllegalArgumentException'.
Når vi videregiver en gyldig værdi for søvntid til metoden sleep (), tager de andre tråde turen til at udføre, mens den aktuelle tråd sover.
=> Tjek her for at se AZ af Java-træningsvejledninger her.
det help desk interview spørgsmål og svar
Anbefalet læsning
- Multithreading i Java - Vejledning med eksempler
- Multithreading i C ++ med eksempler
- Java-synkroniseret: Hvad er trådsynkronisering i Java
- Java-tråde med metoder og livscyklus
- Java String Tutorial | Java strengmetoder med eksempler
- Sådan bruges Java toString-metoden?
- TreeMap I Java - Vejledning med Java TreeMap-eksempler
- JAVA-vejledning til begyndere: 100+ praktiske Java-videovejledninger