Je cherche une classe où je peux remplacer une méthode pour faire le travail, et renvoyer les résultats comme un itérateur. Quelque chose comme ceci:Java itérateur de travail parallèle?
ParallelWorkIterator<Result> itr = new ParallelWorkIterator<Result>(trials,threads) {
public Result work() {
//do work here for a single trial...
return answer;
}
};
while (itr.hasNext()) {
Result result = itr.next();
//process result...
}
Cela va principalement être utilisé pour des choses comme des simulations de Monte Carlo, mais je ne veux pas avoir à faire face à la mise en place des pools de threads et la gestion des fils qui reviennent à chaque fois. J'ai roulé ma propre classe que j'espère que accomplit ceci, mais je ne suis pas assez confiant dedans et ai pensé vérifier si quelque chose comme ceci existait déjà. Editer: Pour être clair, je veux qu'il continue à fonctionner en arrière-plan et que les résultats de mise en file d'attente après que chaque méthode de travail revient jusqu'à ce que tous les essais ont été achevés. Ainsi, la méthode suivante peut attendre de retourner jusqu'à ce qu'il y ait un résultat dans la file d'attente.
Merci, on dirait qu'il fait tout ce que je veux. Je souhaite juste que java n'était pas si prolixe. – job
verbeux et non équivoque sont la moitié d'une épée à double tranchant. –
Ce que j'ai fait pour gérer la verbosité est d'écrire une classe wrapper qui étend ExecutorCompletionService, et conserve une liste des futurs soumis. Un booléen public hasRemaining() {return 0
Tim