четверг, 5 апреля 2012 г.

volatile

volatile - летучий

ключевое слово в Java, которым помечают поля в классах, поле может быть как обьектом, так и обычным типом (в отличии от synchronized, которое может быть примененено только на поля классовых типов)

Это ключевое слово означает, что поле бедут доступно и изменяемо раными потоками, каждый из потоков не позволяет себе кеширование, и каждый раз обращается непосредственно к памяти поля.

Таблица отличий между volatile и synchronized

Characteristic Synchronized Volatile
Type of variable Object Object or primitive
Null allowed?NoYes
Can block?YesNo
All cached variables synchronized on access?YesFrom Java 5 onwards
When synchronization happensWhen you explicitly enter/exit a synchronized blockWhenever a volatile variable is accessed.
Can be used to combined several operations into an atomic operation?YesPre-Java 5, no. Atomic get-set of volatiles possible in Java5.

Комментариев нет:

Отправить комментарий