Bonjour à tous,
j'ai une classe chargé de mettre à jour des informations pour un fond, un OPCVM, une SICAV (ça peut très bien être un client ou quelque chose d'autre).
Les méthodes de cette classe, par souci de simplification, sont statiques.
Bref ça doit ressembler à ça :
Mon désir est de bloquer le traitement à effectuer pour UN fond, en cas de multithreading (on ne sait jamais).
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 public class MaClasse{ static public void effectueTraitement(Dao monDao, int idFonds){ // quelques traitements prealables if(faireTraitement1Ou2){ effectueTraitementNo1(monDao, idFonds); }else{ effectueTraitementNo2(monDao, idFonds); } } static private effectueTraitementNo1(Dao monDao, int idFonds){ } static private effectueTraitementNo2(Dao monDao, int idFonds){ } }
Donc je ne veut pas ça :
Mais plutôt ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 static public synchronised void effectueTraitement(Dao monDao, int idFonds){
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 static public void effectueTraitement(Dao monDao, int idFonds){ // trouver un objet pour se synchroniser synchronised (monObjet){ // car "synchronised(idFonds)" ça ne marche pas // ... } }
Alors ?
Comment faire ?
Partager