কম্পিউটার

জাভাতে Thread.start() এর পরিবর্তে Thread.run() কে কখন কল করবেন?


যখন আমরা start() কল করি একটি থ্রেডের পদ্ধতি এটি থ্রেডটিকে কার্যকর করা শুরু করে এবং রান() করে জাভা ভার্চুয়াল মেশিন(JVM) দ্বারা একটি থ্রেডের পদ্ধতি বলা হয় . যদি আমরা সরাসরি রান() কল করি পদ্ধতি, এটি একটি স্বাভাবিক হিসাবে বিবেচিত হবে ওভাররাইড করা পদ্ধতি একটি থ্রেড ক্লাসের (বা চলমান ইন্টারফেস) এবং এটি বর্তমান থ্রেডের প্রেক্ষাপটে কার্যকর করা হবে, একটি নতুন থ্রেডে নয়৷

উদাহরণ

public class CallRunMethodTest extends Thread {
   @Override
   public void run() {
      System.out.println("In the run() method: " + Thread.currentThread().getName());
      for(int i = 0; i < 5 ; i++) {
         System.out.println("i: " + i);
         try {
            Thread.sleep(300);
         } catch (InterruptedException ie) {
            ie.printStackTrace();
         }
      }
  }
   public static void main(String[] args) {
      CallRunMethodTest t1 = new CallRunMethodTest();
      CallRunMethodTest t2 = new CallRunMethodTest();
      t1.run(); // calling run() method directly instead of start() method
      t2.run(); // calling run() method directly instead of start() method
   }
}

উপরের উদাহরণে, দুটি থ্রেড তৈরি করা হয়েছে এবং একটি start() পদ্ধতি কল করার পরিবর্তে রান() পদ্ধতিটি সরাসরি থ্রেডগুলিতে কল করা হয়েছে৷

আউটপুট

In the run() method: main
i: 0
i: 1
i: 2
i: 3
i: 4
In the run() method: main
i: 0
i: 1
i: 2
i: 3
i: 4

  1. আমরা কখন জাভাতে প্যাক() পদ্ধতি ব্যবহার করতে পারি?

  2. কিভাবে আমরা জাভাতে invokeLater() পদ্ধতি কল করতে পারি?

  3. জাভাতে Thread.sleep() পদ্ধতির ব্যবহার কী?

  4. কখন আমরা জাভাতে একটি থ্রেডের অপেক্ষা () এবং অপেক্ষা (দীর্ঘ) পদ্ধতি কল করতে পারি?