CodeGym/Java Blog/এলোমেলো/জাভাতে Thread.sleep() পদ্ধতি
John Squirrels
লেভেল 41
San Francisco

জাভাতে Thread.sleep() পদ্ধতি

এলোমেলো দলে প্রকাশিত
সদস্যগণ
জাভা প্রোগ্রামগুলিতে, এমন পরিস্থিতি রয়েছে যখন একটি থ্রেড খুব দ্রুত কার্যকর হয় বা প্রোগ্রামটিকে অন্য থ্রেডে স্যুইচ করতে হয়। এটি করার জন্য, আপনাকে বর্তমান থ্রেডের সম্পাদন স্থগিত করতে হবে। জাভাতে, এটি java.lang.Thread.sleep() পদ্ধতি ব্যবহার করে করা যেতে পারে।

Thread.sleep() পদ্ধতি

থ্রেড ক্লাস Java.lang প্যাকেজে উপস্থিত রয়েছে এবং এতে Thread.sleep () পদ্ধতি রয়েছে। Java.lang.thread sleep() পদ্ধতিটি মিলিসেকেন্ডে একটি নির্দিষ্ট সময়ের জন্য বর্তমান থ্রেডটিকে স্থগিত করতে ব্যবহৃত হয়। আপনি যদি ওরাকল ডক্সে তাকান , আপনি দেখতে পাবেন যে থ্রেড ক্লাসের দুটি ওভারলোডেড স্লিপ() পদ্ধতি রয়েছে ।
static void sleep(long millis)
যেখানে মিলিসেকেন্ডে সময় মিলি। এই পদ্ধতিটি সিস্টেম টাইমার এবং শিডিউলারের নির্ভুলতার উপর নির্ভর করে মিলিসেকেন্ডের মিলিসেকেন্ডের জন্য বর্তমানে নির্বাহ করা থ্রেডকে ঘুমাতে দেয় (সাময়িকভাবে কার্যকর করা বন্ধ করে দেয়, "স্লিপিং")। মিলিসেকেন্ডের জন্য আর্গুমেন্ট মান নেতিবাচক হতে পারে না। যদি তাই হয়, তাহলে IllegalArgumentException নিক্ষেপ করা হবে।
static void sleep(long millis, int nanos)
যেখানে মিলের সময় মিলিসেকেন্ডে এবং ন্যানো হল ন্যানোসেকেন্ডে সময়। পদ্ধতির এই বৈকল্পিকটি মিলিসেকেন্ড এবং ন্যানোসেকেন্ডে সঠিক সময়ের জন্য বর্তমান থ্রেডের কার্য সম্পাদন স্থগিত করতে ব্যবহৃত হয়। ন্যানোসেকেন্ডের মান 0 এবং 999999 এর মধ্যে বৈধ। চলুন একটি সাধারণ প্রোগ্রাম তৈরি করি যা 5 সেকেন্ডের জন্য মূল থ্রেডের সম্পাদনকে থামাতে Thread.sleep() পদ্ধতি ব্যবহার করে:
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-এ ব্যতিক্রম: SleepDemo.main(SleepDemo.java:7) এ java.base/java.lang.Thread.sleep(নেটিভ মেথড) এ টাইমআউট মান ঋণাত্মক।
উপরে আমরা ঘুমের মূল থ্রেড রাখি। এখন অন্য কিছু থ্রেডে পদ্ধতি প্রয়োগ করার চেষ্টা করা যাক।
// 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
মন্তব্য
  • জনপ্রিয়
  • নতুন
  • পুরানো
মন্তব্য লেখার জন্য তোমাকে অবশ্যই সাইন ইন করতে হবে
এই পাতায় এখনও কোনো মন্তব্য নেই