Какие операции в Java считаются атомарными?
java
multithreading
atomicity
робинмаг
источник
источник
volatile
длинные и двойные позиции гарантированно будут атомарными: java.sun.com/docs/books/jls/third_edition/html/memory.html#17.764 bit jvm, long and double assignments are also atomic.
Вы уверены? Я бы сказал, что они предназначены для скомпилированного кода, но как насчет интерпретируемого кода? Наверное, ты прав, но есть ли гарантия?В Java чтение и запись 32-битных или меньших количеств гарантированно атомарны.
Под атомарным мы подразумеваем, что каждое действие происходит за один шаг и не может быть прервано. Таким образом, когда у нас есть многопоточные приложения, операции чтения и записи являются потокобезопасными и не требуют синхронизации.
Например, следующий код является потокобезопасным:
public class ThreadSafe { private int x; public void setX(int x) { this.x = x; } }
источник
Было бы показаться , что уступка долгот атомарные, на основе этого метода в AtomicLong.java:
public final void set(long newValue) { value = newValue; }
Обратите внимание на отсутствие какой-либо синхронизации.
источник
value
. Этоvolatile
.value
естьvolatile
не делает назначениеvalue
атомных, он просто избегает «публикации» вопросов.