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

जावा में Thread और Runnable के बीच अंतर

थ्रेड एक्जीक्यूशन का नया थ्रेड बनाने के दो तरीके हैं। एक है Thread क्लास का सबक्लास घोषित करना। इस सबक्लास को Thread क्लास के run मेथड को ओवरराइड करना चाहिए। सबक्लास का इंस्टेंस तब एलोकेट और स्टार्ट किया जा सकता है।

थ्रेड बनाने का दूसरा तरीका है Runnable इंटरफेस को इम्प्लीमेंट करने वाली क्लास घोषित करना। वह क्लास फिर run मेथड को इम्प्लीमेंट करती है। क्लास का इंस्टेंस तब एलोकेट किया जा सकता है, Thread बनाते समय आर्गुमेंट के रूप में पास किया जाता है, और स्टार्ट किया जाता है।

हर थ्रेड का पहचान के लिए एक नाम होता है। एक से अधिक थ्रेड्स का नाम समान हो सकता है। यदि थ्रेड बनाते समय नाम निर्दिष्ट नहीं किया जाता है, तो उसके लिए एक नया नाम जनरेट किया जाता है।

क्र.सं. मुख्य बिंदु Thread Runnable
1 बुनियादी Thread एक क्लास है। इसका उपयोग थ्रेड बनाने के लिए किया जाता है Runnable एक फंक्शनल इंटरफेस है जिसका उपयोग थ्रेड बनाने के लिए किया जाता है
2 मेथड्स इसमें start() और run() सहित कई मेथड्स होते हैं इसमें केवल एक एब्स्ट्रैक्ट मेथड run() होता है
3 ऑब्जेक्ट एसोसिएशन प्रत्येक थ्रेड एक यूनिक ऑब्जेक्ट बनाता है और उससे जुड़ा होता है मल्टीपल थ्रेड्स एक ही ऑब्जेक्ट को शेयर करते हैं
4 मेमोरी अधिक मेमोरी की आवश्यकता होती है कम मेमोरी की आवश्यकता होती है
5 सीमा जावा में मल्टीपल इनहेरिटेंस अनुमत नहीं है, इसलिए Thread क्लास को एक्सटेंड करने के बाद क्लास किसी अन्य क्लास को एक्सटेंड नहीं कर सकती यदि क्लास Runnable इंटरफेस इम्प्लीमेंट कर रही है तो आपकी क्लास दूसरी क्लास को एक्सटेंड कर सकती है

Runnable का उदाहरण

class RunnableExample implements Runnable {
    public void run() {
        System.out.println("Runnable इम्प्लीमेंटेशन के लिए थ्रेड चल रहा है");
    }
    
    public static void main(String args[]) {
        RunnableExample runnable = new RunnableExample();
        Thread t1 = new Thread(runnable);
        t1.start();
    }
}

Thread का उदाहरण

class ThreadExample extends Thread {
    public void run() {
        System.out.println("थ्रेड चल रहा है");
    }
    
    public static void main(String args[]) {
        ThreadExample t1 = new ThreadExample();
        t1.start();
    }
}

बेस्ट प्रैक्टिस

Runnable इंटरफेस को प्राथमिकता दें क्योंकि:

  • यह कम्पोजिशन को सपोर्ट करता है (इनहेरिटेंस के बजाय)
  • क्लास किसी अन्य क्लास को एक्सटेंड कर सकती है
  • एक ही रननेबल इंस्टेंस को मल्टीपल थ्रेड्स के साथ शेयर किया जा सकता है
  • यह फंक्शनल इंटरफेस है, इसलिए लैम्ब्डा एक्सप्रेशन के साथ उपयोग किया जा सकता है
  1. - Java में List और Set के बीच अंतर

    List और Set दोनों इंटरफेस कलेक्शन फ्रेमवर्क से संबंधित हैं। दोनों इंटरफेस Collection इंटरफेस को एक्सटेंड करते हैं। वे दोनों ऑब्जेक्ट के कलेक्शन को एक यूनिट के रूप में स्टोर करने के लिए उपयोग किए जाते हैं। JDK 1.2 से पहले, हम ऑब्जेक्ट को एक यूनिट के रूप में ग्रुप करने के लिए Arrays, Vectors, और Hash

  1. - Java में इनहेरिटेंस और कंपोजिशन के बीच अंतर

    कंपोजिशन एक डिज़ाइन तकनीक है जिसमें आपकी क्लास में दूसरी क्लास का इंस्टेंस आपकी क्लास के फील्ड के रूप में हो सकता है। इनहेरिटेंस एक मैकेनिज्म है जिसके तहत एक ऑब्जेक्ट क्लास को एक्सटेंड करके पैरेंट ऑब्जेक्ट के गुण और व्यवहार प्राप्त कर सकता है। कंपोजिशन और इनहेरिटेंस दोनों क्लास को संबंधित करके कोड

  1. - जावा में Wait और Sleep के बीच अंतर

    wait() - थ्रेड इस मॉनिटर का ओनरशिप छोड़ देता है और तब तक वेट करता है जब तक कोई अन्य थ्रेड notify() या notifyAll() मेथड के माध्यम से इस ऑब्जेक्ट के मॉनिटर पर वेट कर रहे थ्रेड्स को जगाता नहीं है। थ्रेड तब तक वेट करता है जब तक यह मॉनिटर का ओनरशिप फिर से प्राप्त नहीं कर लेता और एक्जीक्यूशन जारी नहीं रखत