2010-10-25 13 views
29

के साथ सबमिट और निष्पादन विधि के बीच क्या अंतर है, मैंने पाया कि थ्रेड पूल में रननेबल जोड़ने के लिए दो तरीके (सबमिट और निष्पादित) हैं, अंतर क्या है?ThreadPoolExecutor

उत्तर

30

अंतर यह है कि executeFuture वापस नहीं करता है, इसलिए आप Runnable के पूरा होने की प्रतीक्षा नहीं कर सकते हैं और इसका उपयोग करके कोई अपवाद प्राप्त कर सकते हैं।

+4

'भविष्य' आपको 'रननेबल' द्वारा फेंकने वाले अपवाद भी प्राप्त करने की अनुमति देता है। – axtavt

+0

@axtavt: सच है, अनुमान है कि मुझे इसका भी उल्लेख करना चाहिए। – ColinD

1

सबमिट निष्पादन का एक और सामान्य रूप प्रतीत होता है। विशेष रूप से, सबमिट एक भविष्य वस्तु देता है जो गणना के परिणाम का प्रतिनिधित्व करता है।

ThreadPoolExecutor-1

ThreadPoolExecutor -2

14

submit(...) विधि एक निष्पादक ढांचा विस्तार ExecutorService इंटरफेस में शुरू की गई है।

execute(Runnable) से इसका मुख्य अंतर यह है कि submit(...) स्वीकार कर सकते हैं एक Callable<V> (execute() केवल Runnable स्वीकार करता है, जबकि) और Future<V> का एक उदाहरण देता है, आप बाद में फोन करने वाले में उपयोग कर सकते हैं जो एसिंक्रोनस रूप से (संभावित अवरुद्ध परिणाम पुनः प्राप्त करने के लिए जब तक गणना प्रदर्शन किया Callable द्वारा पूरा किया गया है)।

संबंधित मुद्दे