Tout d'abord, je dois dire que je suis assez novice dans l'API java.util.concurrent, donc peut-être que ce que je fais est complètement faux.
Qu'est-ce que je veux faire ?
J'ai une application Java qui exécute essentiellement 2 traitements distincts (appelés monPremierProcessus , monSecondProcessus ), mais ces traitements doivent être exécutés en même temps.
Alors, j'ai essayé de le faire :
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
...
}
monPremierProcessus et monSecondProcessus sont des classes qui implémentent Callable<Object>
et où tout leur traitement est effectué dans la méthode call().
Cela fonctionne assez bien mais je ne suis pas sûr que ce soit la bonne façon de faire. Y a-t-il une bonne façon de faire ce que je veux ? Si non, pouvez-vous me donner quelques conseils pour améliorer mon code (tout en le gardant aussi simple que possible).