Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

जावा में Thread.start() के बजाय Thread.run() को कब कॉल करें?


जब हम किसी थ्रेड पर 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

  1. Java में pack() मेथड का उपयोग कब कर सकते हैं? Java में pack() मेथड का उपयोग कब कर सकते हैं?

    pack() मेथड Java में Window क्लास में परिभाषित है और यह फ्रेम को इस तरह आकार देता है कि इसकी सभी सामग्री उनके पसंदीदा आकार पर या उससे ऊपर हैं। pack() मेथड का एक विकल्प setSize() या setBounds() मेथड्स को कॉल करके फ्रेम आकार को स्पष्ट रूप से स्थापित करना है। सामान्य तौर पर, pack() मेथड का उपयोग setSiz

  1. जावा में invokeLater() मेथड को कैसे कॉल करें? जावा में invokeLater() मेथड को कैसे कॉल करें?

    invokeLater() मेथड SwingUtilities क्लास का एक स्टैटिक मेथड है और इसका उपयोग AWT इवेंट डिस्पैचर थ्रेड में असिंक्रोनसली कार्य करने के लिए किया जा सकता है। SwingUtilities.invokeLater() मेथड SwingUtilities.invokeAndWait() की तरह काम करता है सिवाय इसके कि यह अनुरोध को इवेंट क्यू पर रखता है और तुरंत वापस

  1. - Java में थ्रेड के wait() और wait(long) मेथड को कब कॉल कर सकते हैं?

    जब भी किसी ऑब्जेक्ट पर wait() मेथड को कॉल किया जाता है, तो यह करंट थ्रेड को तब तक इंतजार करने का कारण बनता है जब तक कि दूसरा थ्रेड इस ऑब्जेक्ट के लिए notify() या notifyAll() मेथड को इनवोक न करे, जबकि wait(long timeout) करंट थ्रेड को तब तक इंतजार करने का कारण बनता है जब तक कि या तो दूसरा थ्रेड इस ऑब्