একটি Thread অবজেক্টের run() মেথড সরাসরি কল করলে এটি একটি পৃথক থ্রেড শুরু করে না এবং এটি বর্তমান থ্রেডের মধ্যে এক্সিকিউট হয়। Runnable.run একটি পৃথক থ্রেড থেকে এক্সিকিউট করতে, নিচের যেকোনো একটি করতে হবে:
- Runnable অবজেক্ট ব্যবহার করে একটি থ্রেড কন্সট্রাক্ট করুন এবং Thread-এ start() মেথড কল করুন।
- Thread অবজেক্টের একটি সাবক্লাস সংজ্ঞায়িত করুন এবং এর run() মেথডের সংজ্ঞা ওভাররাইড করুন। তারপর এই সাবক্লাসের একটি ইনস্ট্যান্স কন্সট্রাক্ট করুন এবং সেটির ওপর সরাসরি start() মেথড কল করুন।
উদাহরণ
public class ThreadRunMethodTest {
public static void main(String args[]) {
MyThread runnable = new MyThread();
runnable.run(); // run() মেথড কল করা পৃথক থ্রেড শুরু করে না
System.out.println("Main Thread");
}
}
class MyThread extends Thread {
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
System.out.println("Child Thread interrupted.");
}
System.out.println("Child Thread");
}
}
উপরের উদাহরণে, মেইন থ্রেড ThreadRunMethodTest, চাইল্ড থ্রেড MyThread-কে run() মেথড ব্যবহার করে কল করে। এর ফলে চাইল্ড থ্রেড সম্পূর্ণ এক্সিকিউট হওয়ার আগে মেইন থ্রেডের বাকি অংশ এক্সিকিউট হয় না, তাই "Child Thread" "Main Thread"-এর আগে প্রিন্ট হয়।
আউটপুট
Child Thread Main Thread