В течение многих лет я пытался понять часть спецификации Java, которая касается модели памяти и concurrency. Я должен признать, что я потерпел неудачу. Да "Я понимаю, что блокировки и" синхронизированы "и wait() и notify(). И я могу использовать их просто отлично, спасибо. У меня даже есть смутное представление о том, что делает" изменчивый". Но все это не было получено из спецификации языка - скорее, из общего опыта.
Вот два примера вопросов, которые я задаю. Я не очень интересуюсь конкретными ответами, так как мне нужно понять, как ответы получены из спецификации (или может быть, как я заключаю, что спецификация не имеет ответа).
- Что делает "volatile", точно?
- Является ли запись переменной атома? Это зависит от типа переменной?