С одной стороны постоянно слышу о такой проблеме многопоточности как гонки,когда два потока могут обращаться с одними и теми же ресурсами и в результате не синхронизировано их изменять из-за чего возникают ошибки. Но так же есть зарезервированное слово volatile ,которое можно использовать для того,что бы данные измененные в одном потоке были видны в другом. По мне ,так тут некоторое противоречие.В первом случае потоки видят данные друг друга,а во втором для этого надо специально сообщать. ЧТо я не понимаю?
volatile - это переменная, значение которой не кешируется. Таким образом, в ней всегда актуальные данные. Сам же процесс перезаписи происходит атомарно, то есть, за одно мгновение относительно восприятия времени потоками, если так можно выразиться.
Ну volatile также как и synchronized делает потокобезопасным, но если допустим 2 потока работают на разных процессорах с одним объектом то в зависимости от кеша он может быть на одном процессере в кеше в одном состоянии, а в кеше второго процессора в другом, волатайл позволяет синхронизировать и это поведение.
volatile
не позволяет потокам копировать переменные в свой кэш. Вместо этого, потоки берут volatile
переменные из главной копии. Поэтому, при изменении volatile
переменной в одном потоке, она изменяется и в другом.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как изменить цвет GUI во всех классах с помощью одного класса и JCheckBox'a когда нажимаешь на него меняется цвет к примеру на красный когда снимаешь...
Вводится одна строка целикомНеобходимо вывести те слова данной строки, которые начинаются с буквы из интервала от a до h
Я когда хочу админом войти на страницу в своем проекте он выдает ошибку 404
Я создаю двухмерные штрихкоды с помощью API-интерфейса iText, но они попадают в PDF-документ как растровые изображения, а во время печати на принтерах...