जब हम किसी थ्रेड पर start() मेथड कॉल करते हैं तो यह थ्रेड को निष्पादन शुरू करने का कारण बनता है और थ्रेड का run() मेथड जावा वर्चुअल मशीन (JVM) द्वारा बुलाया जाता है। यदि हम सीधे run() मेथड को कॉल करते हैं, तो इसे थ्रेड क्लास (या रननेबल इंटरफेस) के सामान्य ओवरराइडन मेथड के रूप में माना जाएगा और यह वर्तमान थ्रेड के संदर्भ में निष्पादित होगा, न कि एक नए थ्रेड में।
उदाहरण
public class CallRunMethodTest extends Thread {
@Override
public void run() {
System.out.println("run() मेथड में: " + 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() मेथड कॉल करना
}
}
उपरोक्त उदाहरण में, दो थ्रेड्स बनाए गए हैं और थ्रेड्स पर start() मेथड कॉल करने के बजाय सीधे run() मेथड कॉल किया गया है।
आउटपुट
run() मेथड में: main i: 0 i: 1 i: 2 i: 3 i: 4 run() मेथड में: main i: 0 i: 1 i: 2 i: 3 i: 4