Y a-t-il une différence entre ces 3 exemples "atomiques" ?
Bonsoir,
Je souhaiterais savoir s'il existe une différence entre ces trois exemples atomiques :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| // Exemple 1 : synchronized
public class MaClasse {
public boolean maVariable = false;
public void change(){
synchronized(this){
maVariable = true;
}
}
}
// Exemple 2 : type atomique
public class MaClasse {
public AtomicBoolean maVariable = new AtomicBoolean(false);
public void change(){
maVariable.set(true);
}
}
// Exemple 3 : volatile
public class MaClasse {
public volatile boolean maVariable = false;
public void change(){
maVariable = true;
}
} |
S'il y a une différence, pouvez-vous m'expliquer pourquoi ?
Je compte utiliser "maVariable" comme un flag, pour arrêter un thread qui tourne un boucle par exemple.
Merci :)