चलने योग्य और कॉल करने योग्य दोनों कार्यात्मक इंटरफ़ेस। जो वर्ग इन इंटरफेस को लागू कर रहे हैं उन्हें किसी अन्य थ्रेड द्वारा निष्पादित करने के लिए डिज़ाइन किया गया है।
थ्रेड को रूनेबल के साथ शुरू किया जा सकता है और वे एक नया थ्रेड शुरू करने के दो तरीके हैं:एक थ्रेड क्लास को उप-वर्ग करके और दूसरा रननेबल इंटरफ़ेस को लागू कर रहा है।
थ्रेड क्लास में कॉल करने योग्य कंस्ट्रक्टर नहीं होता है, इसलिए हमें थ्रेड निष्पादित करने के लिए एक्ज़ीक्यूटर सर्विस क्लास का उपयोग करना चाहिए।
Sr. नहीं. | <वें शैली ="चौड़ाई:9.7959%; पाठ-संरेखण:केंद्र;">कुंजीचलाने योग्य | कॉल करने योग्य | |
---|---|---|---|
1 | पैकेज | यह Java.lang से संबंधित है | यह java.util.concurrent के अंतर्गत आता है |
2 | धागा निर्माण | हम रननेबल को एक पैरामीटर के रूप में पास करके थ्रेड बना सकते हैं। | हम कॉल करने योग्य को पैरामीटर के रूप में पास करके थ्रेड नहीं बना सकते हैं |
3 | वापसी का प्रकार | रनेबल कुछ भी वापस नहीं करता है | कॉल करने योग्य परिणाम लौटा सकता है |
4. | विधि | इसमें रन () विधि है | इसमें कॉल () विधि है |
5 | थोक निष्पादन | इसका उपयोग कार्य के थोक निष्पादन के लिए नहीं किया जा सकता | इसका उपयोग इनवोकऑल () को लागू करके कार्य के थोक निष्पादन के लिए किया जा सकता है। |
चलाने योग्य का उदाहरण
public class RunnableExample implements Runnable { public void run() { System.out.println("Hello from a Runnable!"); } public static void main(String args[]) { (new Thread(new RunnableExample())).start(); } }
कॉल करने योग्य का उदाहरण
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("In Future Object" + future.get()); } } import java.util.concurrent.Callable; public class Task implements Callable { @Override public String call() throws Exception { System.out.println("In call"); String name = "test"; return name; } }