Prima di tutto, devo dire che sono abbastanza nuovo per l'API java.util.concurrent, quindi forse quello che sto facendo è completamente sbagliato.È un buon modo per usare java.util.concurrent.FutureTask?
Che cosa voglio fare?
Ho un'applicazione Java che gira fondamentalmente 2 elaborazione separata (chiamata myFirstProcess, mySecondProcess), ma questi l'elaborazione deve essere eseguita allo stesso tempo.
Così, ho provato a farlo:
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 e mySecondProcess sono classi che implementa Callable<Object>
, e dove tutti loro trattamento è fatto nel metodo() chiamata.
Sta funzionando abbastanza bene, ma non sono sicuro che sia il modo corretto per farlo. È un buon modo per fare ciò che voglio? In caso contrario, puoi darmi qualche suggerimento per migliorare il mio codice (e mantenerlo il più semplice possibile).
Le condizioni del tuo tempo mancano una parentesi chiusa :) –