9. Для чего нужны Atomic типы данных? Чем отличаются от volatile?

9. Для чего нужны Atomic типы данных? Чем отличаются от volatile?

UNKNOWN

Чтобы безопасно выполнять операции при параллельных вычислениях в нескольких потоках не используя при этом ни блокировок, ни синхронизацию synchronized.

Операция называется атомарной, если её можно безопасно выполнять при параллельных вычислениях в нескольких потоках, не используя при этом ни блокировок, ни синхронизацию synchronized.

volatile принуждает использовать единственный экземпляр переменной, но не гарантирует атомарность. Например, операция count++ не станет атомарной просто потому что count объявлена volatile. C другой стороны class AtomicInteger предоставляет атомарный метод для выполнения таких комплексных операций атомарно, например getAndIncrement() – атомарная замена оператора инкремента, его можно использовать, чтобы атомарно увеличить текущее значение на один. Похожим образом сконструированы атомарные версии и для других типов данных.


Предыдущий вопрос: 8. Что обозначает ключевое слово volatile? Почему операции над volatile переменными не атомарны?

Следующий вопрос: 10. Что такое потоки демоны? Для чего они нужны? Как создать поток-демон?

Все вопросы по теме: список

Все темы: список

Вопросы/замечания/предложения/нашли ошибку: напишите мне

Report Page