CodeGym /Blog Jawa /Acak /Thread.sleep() Metode ing Jawa
John Squirrels
tingkat
San Francisco

Thread.sleep() Metode ing Jawa

Diterbitake ing grup
Ing program Jawa, ana kahanan nalika utas dieksekusi kanthi cepet utawa program kasebut kudu ngalih menyang utas liyane. Kanggo nindakake iki, sampeyan kudu nundha eksekusi thread saiki. Ing Jawa, iki bisa rampung nggunakake cara java.lang.Thread.sleep () .

Metode Thread.sleep().

Kelas Utas ana ing paket Java.lang lan ngemot cara Thread.sleep () . Java.lang.thread sleep () cara digunakake kanggo nundha thread saiki kanggo wektu tartamtu ing milliseconds. Yen katon ing Oracle docs , sampeyan bakal nemokake sing ana loro turu overloaded () cara kelas Utas .

static void sleep(long millis)
ngendi millis wektu ing milliseconds. Cara iki njalari thread sing lagi dieksekusi dadi turu (mandheg sauntara eksekusi, "turu") kanggo millis milidetik, gumantung saka presisi timer sistem lan panjadwal. Nilai argumen kanggo milliseconds ora bisa negatif. Yen mangkono, IllegalArgumentException bakal dibuwang.

static void sleep(long millis, int nanos)
ing ngendi panggilingan iku wektu ing milliseconds lan nanos wektu ing nanoseconds. Cara varian iki digunakake kanggo nundha eksekusi utas saiki kanthi wektu sing tepat ing milidetik lan nanodetik. Nilai nanosecond bener antarane 0 lan 999999. Ayo nggawe program prasaja sing nggunakake Thread.sleep () cara kanggo ngaso eksekusi thread utama kanggo 5 detik:

public class SleepDemo {

       public static void main(String[] args) throws InterruptedException {
           //the current time in milliseconds
           long start = System.currentTimeMillis();
           // stop the main thread of the program for 5000 milliseconds (5 seconds)
           Thread.sleep(5000);
           System.out.println("The thread is paused for " + (System.currentTimeMillis() - start) + " milliseconds");
       }
}
Apa sing kedadeyan ing program iki? Pisanan diwiwiti, banjur turu 5 milidetik (5 detik), banjur nyetak menyang console pesen babagan suwene beku, banjur metu. Output yaiku:
Utas iki ngaso nganti 5008 milidetik
Nalika sampeyan bisa ndeleng, program ora ngaso kanggo 5 detik, nanging sethitik maneh. Uga yen sampeyan mbukak program ing komputer, sampeyan bakal sok dong mirsani sing bisa mungkasi eksekusi thread kanggo maneh saka 5000 milliseconds lan ora perlu kanggo 5008 milliseconds. Intine iku kabeh gumantung ing sistem operasi lan implementasine spesifik saka panjadwal thread. Ing rinci sethitik liyane, wektu nyata thread ngenteni sadurunge tangi lan miwiti eksekusi gumantung ing timer sistem lan schedulers. Kanggo sistem sing sepi, wektu turu sing nyata cedhak karo wektu turu sing ditemtokake, nanging kanggo sistem sing dimuat bakal rada suwe. Cara iki asring digunakake ing thread anak nalika sampeyan kudu nindakake sawetara tumindak kabeh wektu, nanging ora asring banget. Iki minangka conto program sing bakal nyithak pesen saben detik lan ora bakal metu:

public class SleepDemo1 {

   public static void main(String[] args) throws InterruptedException {
       while (true)
       {
           Thread.sleep(1000);
           System.out.println("One more second");
       }
   }
}

Titik penting saka Turu Utas Jawa

Penting kanggo elinga yen metode Java Thread Sleep bisa digunakake kanthi cara:
  • Iku tansah nundha eksekusi thread saiki.

  • Utas nyata turu nganti tangi, lan wektu eksekusi gumantung saka timer lan jadwal sistem.

  • Utas turu ora ngalangi utas saiki.

  • Utas liyane bisa ngganggu utas sing lagi turu, mula InterruptedException dibuwang.

  • Nilai argumen kanggo milliseconds ora bisa negatif, yen ora, IllegalArgumentException bakal dibuwang.

Kanggo menehi conto mbuwang IllegalArgumentException , cukup modifikasi program ing ndhuwur:

public class SleepDemo1 {

       public static void main(String[] args) throws InterruptedException {
           //the current time in milliseconds
           long start = System.currentTimeMillis();
           // stop the main thread of the program for 5000 milliseconds (5 seconds)
           Thread.sleep(-5000);
           System.out.println("The thread is paused for " + (System.currentTimeMillis() - start) + " ms");
       }
}
Punika output:
Pangecualian ing thread "utama" java.lang.IllegalArgumentException: nilai wektu entek negatif ing java.base/java.lang.Thread.sleep(Metode Asli) ing SleepDemo.main(SleepDemo.java:7)
Ndhuwur kita sijine utas utama kanggo turu. Saiki ayo nyoba aplikasi metode kasebut ing sawetara thread liyane.

// Java Program to sleep the custom thread
public class SleepDemo2 extends Thread{

       public void run()
       {
           // thread 0
           try {
               for (int i = 0; i < 10; i++) {

                   // sleeps the main thread for about 2 seconds
                   Thread.sleep(2000);
                   System.out.println(i);
               }
           }
           catch (Exception e) {

               // catching the exception
               System.out.println(e);
           }
       }
       public static void main(String[] args)
       {
           SleepDemo2 sleepDemo2 = new SleepDemo2();
           sleepDemo2.start();
       }
}
Output yaiku:
0 1 2 3 4 5 6 7 8 9
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION