কম্পিউটার টিউটোরিয়াল

জাভাতে Thread.start() বদলে Thread.run() কখন কল করা উচিত?


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

উদাহরণ

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(); // start() মেথডের বদলে সরাসরি run() মেথড কল করা 
        t2.run(); // start() মেথডের বদলে সরাসরি run() মেথড কল করা 
    } 
}

উপরের উদাহরণে, দুটি থ্রেড তৈরি করা হয়েছে এবং থ্রেডগুলোর ওপর সরাসরি run() মেথড কল করা হয়েছে 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. জাভাতে pack() মেথড কখন ব্যবহার করবেন

  2. জাভাতে invokeLater() মেথড কল করার পদ্ধতি

  3. জাভাতে Thread.sleep() মেথডের ব্যবহার

  4. জাভাতে থ্রেডের wait() এবং wait(long) মেথড কখন কল করতে হয়