Volatile предоставляет слабый механизм синхронизации, гарантирующий уведомление об обновлениях переменных другим потокам. Изменчивые переменные не кэшируются в регистрах и не невидимы для других процессоров, поэтому чтение изменчивой переменной всегда возвращает самое последнее записанное значение. Это можно представить как следующую семантику, но Летательный — это более легкий механизм синхронизации. Volatile может обеспечить только видимость, но не атомарность. Другими словами, изменчивые переменные нельзя использовать в составных операциях, таких как i++.
Скопируйте код кода следующим образом:
общедоступная синхронизированная сила setValue (int value) {
это.значение = значение;
}
общедоступный синхронизированный int getValue(){
возвращаемое значение;
}
Летучие переменные можно использовать только при соблюдении всех следующих условий:
1. Операция записи в переменную не зависит от текущего значения переменной, или вы можете гарантировать, что только один поток обновляет значение переменной.
2. Эта переменная не будет включена в условие инвариантности вместе с другими переменными состояния.
3. Нет необходимости блокироваться при доступе к переменным.