Bonjour,
j'espère que je m'engage dans la bonne voie. En fait j'ai un traitement qui est très long. J'ai réussi à cibler le morceau qui est le plus lent et j'aimerais l'exécuter en multi-thread. Par contre en lisant un peu de doc, je ne fais que m'embrouiller j'ai l'impression.
j'ai donc besoin de vos lumières. Voici "en gros" le code existant. les // indiquent quelle partie je voudrais paralléliser.
bon j'espère que c'est clair ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 boucle 1 { ObjetType1 obj ... ObjetType2[] listeObjetType2 = obj.loadListeType2 boucle 2 { // boucle for sur listeObjetType2 // début parallèle ObjetType3 o3 = listeObjetType2[i].chargeType3(); // hop des traitements (lectures de valeurs sur o3) // ajout des valeurs dans un objet hashmap (à transformer en hashtable je suppose ??) listeCumulée.add(/* les valeurs que j'ai lues précédemment*/); // si la clé existe déjà, on cumule les valeurs // fin parallèle } // boucle 2 // traitement sur l'objet listeCumulée et vidage de la liste } // boucle 1
En fait j'ai deux questions :
1 . comment exécuter un thread par indice de boucle ?
faut il fermer le thread apres ou c'est automatique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 for(...) //boucle2 new Thread { public void run() { /* mon code à paralléliser */ }};
2 . mon objet listeCumulée (un hashmap pour l'intant) doit il etre transformé en hashtable ? Faut il que j'y accède en synchronised.
Sur cet objet, quand je fais add, je vérifie si la clé existe, si oui, je cumule la valeur existante. Est ce que le multi-thread ne va pas alourdir mon traitement au lieu de l'améliorer ??
merci d'avance et désolé pour la longueur ...
[EDIT] petite question subsidiaire ...![]()
dans ce traitement à paralléliser, lorsque je catch une exception, j'écris dans un fichier de log. Faut il également utiliser le mot clé synchronised ? (je suppose que oui mais bon, je suis un peu embrouillé ... on serait pas lundi matin ??)
Partager