যখন আমরা 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