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

क्या हम जावा में start() के बजाय सीधे run() मेथड को कॉल कर सकते हैं?

उदाहरण

class MyThread extends Thread { 
    public void run() { 
        try { 
            System.out.println("थ्रेड " + Thread.currentThread().getId() + " वर्तमान में चल रहा है"); 
        } catch (Exception e) { 
            System.out.println("अपवाद पकड़ा गया"); 
        } 
    } 
} 

public class Main { 
    public static void main(String[] args) { 
        int n = 6; 
        for (int i = 1; i < n; i++) { 
            MyThread my_object = new MyThread(); 
            my_object.run(); // start() के बजाय सीधे run() कॉल करना
        } 
    } 
}

आउटपुट

थ्रेड 1 वर्तमान में चल रहा है 
थ्रेड 1 वर्तमान में चल रहा है 
थ्रेड 1 वर्तमान में चल रहा है 
थ्रेड 1 वर्तमान में चल रहा है 
थ्रेड 1 वर्तमान में चल रहा है

व्याख्या: 'MyThread' नामक एक क्लास मुख्य Thread को विरासत में लेती है, जिसमें एक 'run' फंक्शन परिभाषित होता है, जो वर्तमान में चल रहे थ्रेड की आईडी देता है। एक ट्राई और कैच ब्लॉक परिभाषित किया जाता है जो अपवाद (यदि कोई हो) को पकड़ता है और प्रासंगिक त्रुटि प्रदर्शित करता है। मुख्य फंक्शन में, एक 'for' लूप चलाया जाता है और 'MyThread' क्लास का नया ऑब्जेक्ट बनाया जाता है। इस ऑब्जेक्ट पर 'run' फंक्शन को कॉल किया जाता है।

run() vs start() - महत्वपूर्ण अंतर:

पहलूrun() सीधे कॉल करनाstart() कॉल करना
थ्रेड निर्माणनया थ्रेड नहीं बनातानया थ्रेड बनाता है
निष्पादनवर्तमान थ्रेड में क्रमिकनए थ्रेड में समानांतर
आउटपुट में थ्रेड आईडीसभी समान (मुख्य थ्रेड)प्रत्येक के लिए अलग
उपयोग मामलापरीक्षण/डीबगिंगवास्तविक बहु-थ्रेडिंग

सही तरीका:

MyThread t = new MyThread();
t.start(); // यह नया थ्रेड बनाता है और फिर run() को कॉल करता है

निष्कर्ष: हां, आप सीधे run() कॉल कर सकते हैं, लेकिन यह बहु-थ्रेडिंग नहीं बनाता - यह केवल मुख्य थ्रेड में एक सामान्य विधि कॉल की तरह निष्पादित होता है।

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

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

  1. - क्या Java में main मेथड को private घोषित कर सकते हैं?

    हां, हम Java में main मेथड को private घोषित कर सकते हैं। यह बिना किसी त्रुटि के सफलतापूर्वक कंपाइल हो जाता है लेकिन रनटाइम पर यह कहता है कि main मेथड पब्लिक नहीं है। उदाहरण class PrivateMainMethod { private static void main(String args[]) { System.out.println(Welcome to Tutorials Poin

  1. - क्या हम Java में final मेथड को इनहेरिट कर सकते हैं

    हां, एक final मेथड इनहेरिट होता है लेकिन इसे ओवरराइड नहीं किया जा सकता।