pour faire les traitements en //, vous démarrez N+1 thread
Les N premiers threads vont lire dans une SynchronousQueue les personnes à traiter, et le dernier thread va y écrire au fur et à mesure le contenu de la list.
Grosso modo:
SynchrounousQueue<Personne> synchronousQueue=new SynchrounousQueue<Personne>();
un thread:
1 2 3 4
| for (Personne personne: listePersonne)
synchronousQueue.put(personne);
for (int i=0;i<nbreThreads)
synchronousQueue.put(UN_MARQUEUR_DE_FIN); // ben oui, un marqueur par thread |
les autres threads
1 2 3 4
|
Personne personne = null;
while ((personne=synchrounousQueue.take()!=UN_MARQUEUR_DE_FIN)
traiter(personne); |
et tout ce bazard finira a peu près son bordel en meme temps
Partager