Я посмотрел на класс copeonWritearRaylist , и я задавался вопросом, почему его метод get (...) не нуждается в никакой синхронизации. Методы add (...) и set (...) изменяют базовый массив в блоке Mutex, используя Reentrantlock, но Get (...) просто возвращает необработанный массив без каких -либо синхронизации. Хорошо, основной массив объявлен нестабильным: < /p>
private volatile transient Object[] array;
< /code>
Я не вижу, как использование volatile делает любую синхронизацию избыточной. Это только предотвращает кэширование ссылки, хранящейся в массиве. Если бы я понял, почему синхронизация здесь не нужна, я мог бы написать свой код с чуть меньшим конфликтом с блокировкой, чем раньше.
Подробнее здесь: https://stackoverflow.com/questions/159 ... ronization
Почему CopyonWritearRaylist.get не нуждается в синхронизации? [дублировать] ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Почему CopyonWritearRaylist.get не нуждается в синхронизации? [дублировать]
Anonymous » » в форуме JAVA - 0 Ответы
- 1 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Почему CopyonWritearRaylist.get не нуждается в синхронизации? [дублировать]
Anonymous » » в форуме JAVA - 0 Ответы
- 0 Просмотры
-
Последнее сообщение Anonymous
-