Я иду через книгу потоков Java. Я наткнулся на это заявлениеНекоторые сомнения относительно летучих и атомных классов?
Заявление 1: - «летучие переменные могут безопасно использоваться только для одной нагрузки или работы магазина и не может быть применен к длинных или двойных variales Эти ограничения делают использование летучих переменных. необычный "
Я не понял, что здесь означает одна загрузка или операция хранения? почему volatile не может быть применяется к длинным или двойным variales?
Заявление 2: - «летучий целое число, не может быть использован с оператором ++ ++, потому что оператор содержит множественного класса instructions.The AtomicInteger имеет метод, который позволяет целое число, что имеет место быть увеличивается атомарно. "
Почему Volatile integer не может использоваться с оператором ++ и как AtomicInteger обращается к нему?
Его книга действительно устарела. [JLS §17.7] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.7): 'Запись и чтение изменчивых длинных и двойных значений всегда являются атомарными . Я подозреваю, что книга, возможно, была написана до Java 5, когда контракт с 'volatile' был [все wonky] (http://stackoverflow.com/a/10451364/758280). – Jeffrey
@Robin. Благодарю. Мой вопрос в том, как оператор ++ не является потокобезопасным, тогда как Atomic integer является потокобезопасным. Можете ли вы рассказать об этом на простом примере? –