मुझे कई कार्य सबमिट करने की आवश्यकता है और फिर सभी परिणामों के उपलब्ध होने तक उनके लिए प्रतीक्षा करें। उनमें से प्रत्येक String
को Vector
(जो डिफ़ॉल्ट रूप से सिंक्रनाइज़ किया गया है) जोड़ता है। फिर मुझे वेक्टर में प्रत्येक परिणाम के लिए एक नया कार्य शुरू करने की आवश्यकता है, लेकिन मुझे ऐसा करने की ज़रूरत है जब पिछले सभी कार्यों ने अपना काम बंद कर दिया हो।जावा निष्पादक: कार्य समाप्ति के लिए प्रतीक्षा करें।
मैं जावा एक्जिक्यूटर का उपयोग करना चाहता हूं, विशेष रूप से मैंने थ्रेड की निश्चित संख्या का उपयोग करने के लिए Executors.newFixedThreadPool(100)
का उपयोग करने की कोशिश की है (मेरे पास कार्य की एक चर संख्या है जो 10 या 500 हो सकती है) लेकिन मैं निष्पादकों के साथ नया हूं और मैं कार्य समाप्ति की प्रतीक्षा कैसे करें, यह नहीं पता। यह मेरा कार्यक्रम क्या करने की जरूरत के एक स्यूडोकोड की तरह कुछ है:
ExecutorService e = Executors.newFixedThreadPool(100);
while(true){
/*do something*/
for(...){
<start task>
}
<wait for all task termination>
for each String in result{
<start task>
}
<wait for all task termination>
}
क्योंकि मैं थोड़ी देर के (सही) में हूँ और मैं executorService
पुन: उपयोग करने की जरूरत है मैं एक e.shutdown ऐसा नहीं कर सकते ..
क्या आप मेरी मदद कर सकते हैं? क्या आप मुझे जावा निष्पादकों के बारे में एक गाइड/पुस्तक सुझा सकते हैं?
क्या e.submit के बीच का अंतर (मुझे लगता है कि मैं इस अपने उदाहरण का अनुसरण उपयोग करने की आवश्यकता) और ई है http://stackoverflow.com/questions/1228433/java-parallel-work-iterator/1228445 – Tim