C (платформа Java SE 7)
Пакет java.util.concurrent.atomic Описание
Този метод (който се променя в зависимост от типовете параметри в различни класове) атомно задава променлива to updateValue, ако понастоящем съдържа очаквана стойност, отчитаща вярно при успех. Класовете в този пакет също съдържат методи за получаване и безусловно зададени стойности, както и по-слабата операция за условна атомна актуализация, слабаCompareAndSet, описана по-долу.
Спецификациите на тези методи позволяват на реализациите да използват ефективни атомни инструкции на ниво машина, които са налични на съвременните процесори. На някои платформи обаче поддръжката може да доведе до някаква форма на вътрешно блокиране. По този начин методите са строго гарантирани да не блокират - нишка може да блокира моментално преди да извърши работата.
Екземплярите на класовете AtomicBoolean, AtomicInteger, AtomicLong и AtomicReference осигуряват достъп и актуализации на една променлива от подходящия тип. Всеки клас предоставя и съответните полезни методи за този тип. Например класовете AtomicLong и AtomicInteger предоставят атомни инкрементални методи. Едно приложение трябва да генерира поредни номера, както в:
В допълнение към класовете, представляващи единични стойности, този пакет съдържа класове на Updater, които могат да бъдат използвани за получаване на операция compareAndSet за всяко избрано летливо поле на който и да е избран клас. AtomicReferenceFieldUpdater, AtomicIntegerFieldUpdater и AtomicLongFieldUpdater са помощни програми, базирани на отражение, които осигуряват достъп до свързани типове полета. Те се използват главно в атомни структури от данни, в които няколко летливи полета на един и същ възел (например препратки към дървесни възли) подлежат независимо на атомни актуализации. Тези класове включват по-голяма гъвкавост в това как и кога да се използват атомни актуализации, с цената на тромава настройка, базирана на отражение, по-малко удобство за потребителя и по-свободни гаранции.
Класовете AtomicIntegerArray, AtomicLongArray и AtomicReferenceArray допълнително разширяват атомната поддръжка за работа с масиви от този тип. Тези класове са известни и с това, че осигуряват нестабилна семантика за достъп за своите масивни елементи, което не се поддържа за обикновени масиви.