Comment attendre de tous les threads pour finir, à l'aide de ExecutorService?

J'ai besoin d'exécuter un certain nombre des tâches 4 à un moment, quelque chose comme ceci:

ExecutorService taskExecutor = Executors.newFixedThreadPool(4);
while(...) {
    taskExecutor.execute(new MyTask());
}
//...wait for completion somehow

Comment puis-je obtenir informé une fois que tous d'entre eux sont complets? Pour l'instant je ne peux pas penser à quelque chose de mieux que de fixer certaines compteur de tâches et de diminuer à la fin de chaque tâche, puis moniteur dans une boucle infinie ce compteur à 0; ou obtenir une liste de contrats à Terme et dans une boucle infinie moniteur isDone pour tous. Quelles sont les meilleures solutions n'impliquant pas de boucle infinie?

Grâce.

InformationsquelleAutor serg | 2009-08-09