volatile - летучий
ключевое слово в Java, которым помечают поля в классах, поле может быть как обьектом, так и обычным типом (в отличии от synchronized, которое может быть примененено только на поля классовых типов)
Это ключевое слово означает, что поле бедут доступно и изменяемо раными потоками, каждый из потоков не позволяет себе кеширование, и каждый раз обращается непосредственно к памяти поля.
Таблица отличий между volatile и synchronized
ключевое слово в Java, которым помечают поля в классах, поле может быть как обьектом, так и обычным типом (в отличии от synchronized, которое может быть примененено только на поля классовых типов)
Это ключевое слово означает, что поле бедут доступно и изменяемо раными потоками, каждый из потоков не позволяет себе кеширование, и каждый раз обращается непосредственно к памяти поля.
Таблица отличий между volatile и synchronized
| Characteristic | Synchronized | Volatile |
|---|---|---|
| Type of variable | Object | Object or primitive |
| Null allowed? | No | Yes |
| Can block? | Yes | No |
| All cached variables synchronized on access? | Yes | From Java 5 onwards |
| When synchronization happens | When you explicitly enter/exit a synchronized block | Whenever a volatile variable is accessed. |
| Can be used to combined several operations into an atomic operation? | Yes | Pre-Java 5, no. Atomic get-set of volatiles possible in Java5. |
Комментариев нет:
Отправить комментарий