79 votes

Quelles sont les opérations en Java sont considérés comme atomique?

Quelles sont les opérations en Java sont considérés comme atomique?

96voto

maaartinus Points 12510
  • toutes les missions de types primitifs, sauf pour une longue et double
  • toutes les affectations de références
  • toutes les opérations de java.de façon concomitante.Atomique* les classes

et probablement quelque chose de plus. Regardez les jls

Mise à jour

Les opérations sur le long et double sont sur la commune de la Cpu 64 bits atomique ainsi, bien qu'il n'y a pas de garantie. Voir aussi cette demande de fonctionnalité.

4voto

99tm Points 19742

En Java, la lecture et l'écriture de 32-bits ou plus petites quantités sont garantis d'être atomique.
Atomique, nous entendons chaque action se déroule en une seule étape et ne peut être interrompu. Ainsi, lorsque nous avons des applications multithread, les opérations de lecture et écriture sont thread-safe et ne devrait pas être faite synchronisé.

Par exemple, le code suivant est thread-safe:

public class ThreadSafe   
  {  
    private int x;  
    public void setX(int x)  
          {
           this.x = x;
           } 
  }

0voto

Lyle Z Points 37

Il serait semble que les affectations de longs se atomique, basée sur cette méthode dans AtomicLong.java:

public final void set(long newValue) {
    value = newValue;
}

Remarque l'absence de synchronisation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X