CodeGym /جاوا بلاگ /Random-SD /جاوا ۾ Thread.sleep() طريقو
John Squirrels
سطح
San Francisco

جاوا ۾ Thread.sleep() طريقو

گروپ ۾ شايع ٿيل
جاوا پروگرامن ۾، اهڙيون حالتون آهن جڏهن هڪ موضوع تمام تيزيء سان عمل ڪري رهيو آهي يا پروگرام کي ٻئي سلسلي ڏانهن تبديل ڪرڻ جي ضرورت آهي. هن کي ڪرڻ لاء، توهان کي موجوده سلسلي جي عمل کي معطل ڪرڻ جي ضرورت آهي. جاوا ۾، اهو استعمال ڪري سگهجي ٿو java.lang.Thread.sleep() طريقو.

Thread.sleep() طريقو

Thread ڪلاس Java.lang پيڪيج ۾ موجود آهي ۽ Thread.sleep() طريقو تي مشتمل آهي . Java.lang.thread sleep() طريقو استعمال ڪيو ويندو آهي موجوده سلسلي کي معطل ڪرڻ لاءِ مخصوص وقت لاءِ مليس سيڪنڊن ۾. جيڪڏهن توهان Oracle docs تي نظر وجهو ته توهان کي معلوم ٿيندو ته اتي ٻه اوور لوڊ ٿيل sleep() ٿريڊ ڪلاس جا طريقا آهن .
static void sleep(long millis)
جتي مليس وقت مليس سيڪنڊن ۾ آهي. اهو طريقو في الحال ايگزيڪيوٽو ٿريڊ کي ننڊ ۾ آڻي ٿو (عارضي طور تي عمل کي روڪيو، "سمهڻ") مليس سيڪنڊن لاءِ، سسٽم ٽائمرز ۽ شيڊيولرز جي درستگي تي منحصر ڪري ٿو. مليس سيڪنڊن لاءِ دليل جي قيمت منفي نه ٿي سگھي. جيڪڏهن ائين آهي ته، غيرقانوني دليلن جي استثنا کي اڇلايو ويندو.
static void sleep(long millis, int nanos)
جتي ملائي ان جو وقت مليس سيڪنڊن ۾ ۽ نانوس وقت نانو سيڪنڊن ۾. ھن قسم جو طريقو استعمال ڪيو ويندو آھي موجوده سلسلي جي عمل کي معطل ڪرڻ لاءِ صحيح وقت لاءِ مليس سيڪنڊن ۽ نانو سيڪنڊن ۾. nanosecond قدر 0 ۽ 999999 جي وچ ۾ صحيح آهي. اچو ته هڪ سادي پروگرام ٺاهيو جيڪو Thread.sleep() طريقو استعمال ڪري 5 سيڪنڊن لاءِ مکيه ٿريڊ جي عمل کي روڪڻ لاءِ:
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");
       }
}
هن پروگرام ۾ ڇا ٿي رهيو آهي؟ پهرين اهو شروع ٿئي ٿو، پوءِ اهو 5 ملي سيڪنڊن (5 سيڪنڊن) لاءِ سمهي ٿو، پوءِ ڪنسول ڏانهن هڪ پيغام پرنٽ ڪري ٿو ته اهو ڪيترو وقت منجهيل هو، ۽ پوءِ نڪرندو آهي. پيداوار آهي:
سلسلي کي 5008 ملي سيڪنڊن لاءِ روڪيو ويو آهي
جئين توهان ڏسي سگهو ٿا، پروگرام 5 سيڪنڊن لاء نه روڪيو، پر ٿورو ڊگهو. انهي سان گڏ جيڪڏهن توهان پنهنجي ڪمپيوٽر تي پروگرام هلائيندا آهيو، توهان کي خبر پوندي ته اهو 5000 ملي سيڪنڊن کان گهڻي عرصي تائين سلسلي جي عمل کي روڪي سگهي ٿو ۽ 5008 ملي سيڪنڊن لاءِ ضروري ناهي. نقطي اهو آهي ته اهو سڀ تي منحصر آهي آپريٽنگ سسٽم ۽ ٿريڊ شيڊولر جي مخصوص عمل درآمد تي. ٿورڙي وڌيڪ تفصيل ۾، حقيقي وقت هڪ سلسلي جو انتظار ڪرڻ کان اڳ جاڳڻ ۽ عمل شروع ڪرڻ جو دارومدار سسٽم ٽائمرز ۽ شيڊولرز تي آهي. هڪ خاموش سسٽم لاء، حقيقي ننڊ جو وقت مقرر ڪيل ننڊ جي وقت جي ويجهو آهي، پر لوڊ ٿيل سسٽم لاء اهو ٿورو ڊگهو هوندو. اهو طريقو اڪثر ٻارن جي سلسلي ۾ استعمال ڪيو ويندو آهي جڏهن توهان کي هر وقت ڪجهه عمل ڪرڻ جي ضرورت آهي، پر گهڻو ڪري نه. هتي هڪ پروگرام جو هڪ مثال آهي جيڪو هر سيڪنڊ ۾ هڪ پيغام پرنٽ ڪندو ۽ ڪڏهن به نه نڪرندو:
public class SleepDemo1 {

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

جاوا ٿريڊ سليپ جا اھم نقطا

اهو ياد رکڻ ضروري آهي ته جاوا ٿريڊ سمهڻ جو طريقو هن طريقي سان ڪم ڪري ٿو:
  • اهو هميشه موجوده سلسلي جي عمل کي معطل ڪري ٿو.

  • اصل ٿريڊ سمهندو آهي جيستائين اهو جاڳندو آهي، ۽ عمل جو وقت سسٽم ٽائمرز ۽ شيڊولرز تي منحصر هوندو آهي.

  • سمهڻ وارو سلسلو موجوده سلسلي کي بلاڪ نٿو ڪري.

  • ٻيو ڪو به ٿريڊ موجوده سليپنگ ٿريڊ ۾ مداخلت ڪري سگهي ٿو، ان صورت ۾ هڪ InterruptedException اڇلايو ويندو آهي.

  • مليس سيڪنڊن لاءِ دليل جو قدر ناڪاري نه ٿو ٿي سگھي، ٻي صورت ۾ هڪ غير قانوني آرگيومينٽ ايڪسيشن اڇلايو ويندو.

اڇلائڻ جو مثال ڏيڻ لاءِ IllegalArgumentException ، صرف مٿي ڏنل پروگرام کي ٿورو تبديل ڪريو:
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");
       }
}
هتي جي پيداوار آهي:
سلسلي ۾ استثنا "main" java.lang.IllegalArgumentException: ٽائم آئوٽ ويليو منفي آهي java.base/java.lang.Thread.sleep(Native Method) at SleepDemo.main(SleepDemo.java:7)
مٿي اسان مکيه موضوع کي ننڊ ۾ وجهي ڇڏيو. هاڻي اچو ته ان طريقي کي ڪنهن ٻئي موضوع تي لاڳو ڪرڻ جي ڪوشش ڪريون.
// 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();
       }
}
پيداوار آهي:
0 1 2 3 4 5 6 7 8 9
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION