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

Java में Runnable और Callable इंटरफेस के बीच अंतर

परिचय

Runnable और Callable दोनों फंक्शनल इंटरफेस हैं। इन इंटरफेस को इम्प्लीमेंट करने वाली क्लासेस को दूसरे थ्रेड द्वारा निष्पादित करने के लिए डिज़ाइन किया गया है।

थ्रेड को Runnable के साथ शुरू किया जा सकता है और नया थ्रेड शुरू करने के दो तरीके हैं: एक है Thread क्लास को सबक्लास करना और दूसरा है Runnable इंटरफेस को इम्प्लीमेंट करना।

Thread क्लास में Callable के लिए कंस्ट्रक्टर नहीं है इसलिए हमें थ्रेड निष्पादित करने के लिए ExecutorService क्लास का उपयोग करना चाहिए।

क्र. सं.मुख्य बिंदुRunnableCallable
1पैकेजयह java.lang से संबंधित हैयह java.util.concurrent से संबंधित है
2थ्रेड निर्माणहम Runnable को पैरामीटर के रूप में पास करके थ्रेड बना सकते हैं।हम Callable को पैरामीटर के रूप में पास करके थ्रेड नहीं बना सकते
3रिटर्न टाइपRunnable कुछ भी वापस नहीं करताCallable परिणाम वापस कर सकता है
4मेथडइसमें run() मेथड हैइसमें call() मेथड है
5बल्क एक्जीक्यूशनइसका उपयोग टास्क के बल्क एक्जीक्यूशन के लिए नहीं किया जा सकताइसका उपयोग invokeAll() को इनवोक करके टास्क के बल्क एक्जीक्यूशन के लिए किया जा सकता है।

Runnable का उदाहरण

public class RunnableExample implements Runnable {
    public void run() {
        System.out.println("Runnable से नमस्ते!");
    }
    public static void main(String args[]) {
        (new Thread(new RunnableExample())).start();
    }
}

Callable का उदाहरण

public class Main {
    public static void main(String args[]) throws InterruptedException, ExecutionException {
        ExecutorService services = Executors.newSingleThreadExecutor();
        Future future = services.submit(new Task());
        System.out.println("फ्यूचर ऑब्जेक्ट में " + future.get());
    }
}
import java.util.concurrent.Callable;
public class Task implements Callable {
    @Override
    public String call() throws Exception {
        System.out.println("कॉल में");
        String name = "test";
        return name;
    }
}
  1. - जावा में Iterator और Enumeration के बीच अंतर

    Iterator और Enumeration दोनों कलेक्शन से एलिमेंट्स को ट्रैवर्स और एक्सेस करने के लिए कर्सर हैं। वे दोनों कलेक्शन फ्रेमवर्क से संबंधित हैं। Enumeration JDK 1.0 में जोड़ा गया था और Iterator JDK 1.2 वर्जन में कलेक्शन फ्रेमवर्क में जोड़ा गया। Enumeration कलेक्शन में स्ट्रक्चरल चेंज नहीं कर सकता क्योंकि

  1. - Java में Queue इंटरफेस की peek(), poll() और remove() विधि में अंतर

    यह एक संग्रह का प्रतिनिधित्व करता है जो प्रसंस्करण से पहले डेटा रखने के लिए अभिप्रेत है। यह फर्स्ट-इन-फर्स्ट-आउट (FIFO) प्रकार की व्यवस्था है। कतार में डाला गया पहला तत्व उससे निकाला गया पहला तत्व होता है। peek() विधि यह विधि वर्तमान कतार के शीर्ष पर ऑब्जेक्ट को लौटाती है, बिना इसे हटाए। यदि कतार खा

  1. - Java में ArrayList और HashSet के बीच अंतर

    HashSet और ArrayList दोनों Java कलेक्शन फ्रेमवर्क के सबसे महत्वपूर्ण क्लासेस में से कुछ हैं।ArrayList और HashSet के बीच महत्वपूर्ण अंतर निम्नलिखित हैं।क्रमांकमुख्य बिंदुArrayListHashSet1कार्यान्वयनArrayList लिस्ट इंटरफेस का कार्यान्वयन है।दूसरी ओर HashSet सेट इंटरफेस का कार्यान्वयन है।2आंतरिक कार्या