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

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


जब हम प्रारंभ() . को कॉल करते हैं थ्रेड पर विधि यह थ्रेड को निष्पादन शुरू करने का कारण बनती है और 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

  1. हम जावा में पैक () विधि का उपयोग कब कर सकते हैं?

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

  1. हम जावा में इनवोकलेटर () विधि को कैसे कॉल कर सकते हैं?

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

  1. हम जावा में थ्रेड के प्रतीक्षा() और प्रतीक्षा (लंबी) विधियों को कब कॉल कर सकते हैं?

    जब भी प्रतीक्षा करें () किसी ऑब्जेक्ट पर विधि को कॉल किया जाता है, यह वर्तमान थ्रेड को तब तक प्रतीक्षा करने का कारण बनता है जब तक कि कोई अन्य थ्रेड सूचित() को आमंत्रित नहीं करता है। या सभी को सूचित करें () इस ऑब्जेक्ट के लिए विधि जबकि प्रतीक्षा करें (लंबा समय समाप्त) वर्तमान थ्रेड को तब तक प्रतीक्ष