सबसे पहले, मुझे यह कहना होगा कि मैं एपीआई java.util.concurrent के लिए काफी नया हूं, इसलिए शायद मैं जो कर रहा हूं वह पूरी तरह से गलत है।क्या यह java.util.concurrent.FutureTask का उपयोग करने का एक अच्छा तरीका है?
मैं क्या करना चाहता हूं?
मैं एक जावा अनुप्रयोग है कि मूल रूप से 2 अलग प्रसंस्करण (myFirstProcess, mySecondProcess कहा जाता है) चलाता है, लेकिन इन प्रसंस्करण एक साथ चलाए किया जाना चाहिए।
तो, मैं ऐसा करने की कोशिश की:
public void startMyApplication() {
ExecutorService executor = Executors.newFixedThreadPool(2);
FutureTask<Object> futureOne = new FutureTask<Object>(myFirstProcess);
FutureTask<Object> futureTwo = new FutureTask<Object>(mySecondProcess);
executor.execute(futureOne);
executor.execute(futureTwo);
while (!(futureOne.isDone() && futureTwo.isDone())) {
try {
// I wait until both processes are finished.
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
logger.info("Processing finished");
executor.shutdown();
// Do some processing on results
...
}
myFirstProcess और mySecondProcess कक्षाएं कि Callable<Object>
लागू करता है, और जहां उनके सभी प्रसंस्करण कॉल() विधि में किया जाता है।
यह काफी अच्छी तरह से काम कर रहा है लेकिन मुझे यकीन नहीं है कि ऐसा करने का यह सही तरीका है। क्या मैं चाहता हूं कि एक अच्छा तरीका है? यदि नहीं, तो क्या आप मुझे अपना कोड बढ़ाने के लिए कुछ संकेत दे सकते हैं (और अभी भी इसे यथासंभव सरल रखें)।
आपकी जबकि स्थिति में एक करीबी ब्रैकेट गुम है :) –