हाथ में निम्नलिखित कोड होने से:ExecutorService
ExecutorService executor = Executors.newFixedThreadPool(10);
Collection collection = new ArrayList();
for (int n=1; n<100; n++)
collection.add(new MyThread(n));
try {
List<Future<Boolean>> futures = executor.invokeAll(collection);
for(Future<Boolean> future : futures){
future.get();
if (future.isDone()) {
System.out.println("true");
}
else
System.out.println("false");
}
} catch (Exception e) {
e.printStackTrace();
}
यदि उपरोक्त सही है?
और यदि सभी future.isDone()
सत्य हैं, तो सभी धागे किए गए हैं?
यह सुनिश्चित करने के लिए कि मैं उन सभी को कैसे कर सकता हूं, मैं ध्वज कैसे बना सकता हूं?
तो मैं इस हिस्से को हटा सकते हैं के पूरा होने की जांच करने के जबकि? अगर (भविष्य .isDone()) { System.out.println ("सत्य"); } अन्य { System.out।println ("झूठे"); } – fen1ksss
मुझे ऐसा लगता है। 'Javadoc] (http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/Future.html#get())' भविष्य 'के लिए कहता है कि' प्राप्त करें '' यदि आवश्यक हो तो प्रतीक्षा करें गणना पूर्ण करने के लिए, और फिर इसके परिणाम को पुनर्प्राप्त करता है। " तो वास्तव में आपको अपने अपवाद हैंडलर में 'isDone' को लपेटने की भी आवश्यकता है। – vainolo