जब हम प्रारंभ() . को कॉल करते हैं थ्रेड पर विधि यह थ्रेड को निष्पादन शुरू करने का कारण बनती है और run() थ्रेड की विधि को जावा वर्चुअल मशीन(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 } }
उपरोक्त उदाहरण में, दो थ्रेड बनाए जाते हैं और रन () विधि को प्रारंभ () विधि को कॉल करने के बजाय सीधे थ्रेड पर कहा जाता है।
आउटपुट
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