Fonctionnement avec synchronized
1 )
Code:
1 2 3 4
| private synchronized void aleatoireMode(){
................
} |
2)
Code:
1 2 3 4
| synchronized (this.simulateur) {
if (this.paramSimul.getModeleVille().isAleatoire()){
this.aleatoireMode();
} |
pour moi la deuxieme facon de faire est identique à la premiere . pourtant mon programme marche avec la deuxieme et pas avec la premiere dans un environnement multithreads (j instancie la classe pulsieur fois).
Code:
1 2 3 4 5 6 7 8 9 10 11
| public class Simulation extends Thread {
.............
public Simulation(Simulateur simulateur, int numVille, ParamSimul paramSimul, Ville ville, DefaultListModel model) {
super(simulateur.getThreadGroup(), simulateur.getID()+"."+numVille);
this.simulateur = simulateur;
if (model!=null) this.model = model;
else this.model = new DefaultListModel();
if (paramSimul!=null) this.paramSimul = paramSimul;
else this.paramSimul = ParamSimul.paramSimul;//les valeurs fixées par default
this.numVilleSimulee = numVille;
} |
bref c'est cool si quelque m'explique la difference entre les deux .