Вопросы по теме 'java-memory-model'
Как CopyOnWriteArrayList может быть поточно-ориентированным?
Я просмотрел исходный код OpenJDK _ 1_ , и кажется, что все операции записи защищены одной и той же блокировкой, а операции чтения вообще не защищены. Насколько я понимаю, в JMM все обращения к переменной (как на чтение, так и на запись) должны...
17279 просмотров
schedule
14.10.2021
Является ли установка потокобезопасной HashMap?
У меня есть HashMap в моей программе, к которой обращаются несколько потоков, и иногда она устанавливается одним потоком.
Например:
Map<String, String> myMap = new HashMap<String, String>();
Доступ к нему осуществляется...
5443 просмотров
schedule
04.11.2021
Можно ли изменить порядок операций, которые последовательно присваивают значения нескольким изменчивым полям?
Всегда ли следующий код будет распечатывать «правильное» значение данных ? Даже если есть другие операции между присвоением значений data и dataReady в методе setData ?
Или же JVM могла бы изменить порядок этих операций так, чтобы...
63 просмотров
schedule
23.10.2021
Параллелизм Java: безопасная публикация массива
Мой вопрос чрезвычайно прост: как только я записал некоторые значения массива одним или несколькими потоками (фаза 1), как я могу «опубликовать» свой массив, чтобы все изменения были видны другим потокам (фаза 2)?
У меня есть код, который выполняет...
162 просмотров
schedule
09.09.2021
Для чего в Java используются ограждения памяти?
Пытаясь понять, как SubmissionPublisher ( исходный код в Java SE 10, OpenJDK | docs ), новый класс, добавленный в Java SE в версии 9, был реализован, я наткнулся на несколько вызовов API на _ 2_ Раньше я не знал:
fullFence , acquireFence ,...
715 просмотров
schedule
12.09.2021
Чтение и запись локальных переменных Long и Double в Java
Известно, что «чтение / запись в» энергонезависимые переменные типа long и double могут быть неатомарными. Это касается статических и нестатических полей и массивов.
А как насчет соответствующих длинных / двойных локальных переменных. Атомные они...
195 просмотров
schedule
28.02.2022
Что заставляет неизменяемые объекты публиковаться без безопасных методов публикации?
Что значит сказать, что неизменяемые объекты можно публиковать, даже не прибегая к идиомам безопасной публикации?
Я прочитал Параллелизм в Java на практике ( Глава 3, Совместное использование объектов ), но до сих пор не могу понять утверждение:...
564 просмотров
schedule
25.03.2022
OutOfMemoryError: пространство кучи Java при запуске jruby на консоли rails, но не с использованием всей памяти, определенной параметром -J-Xmx
У меня есть приложение rails 3, использующее jruby 1.7, и я пытаюсь использовать консоль rails в своей локальной среде разработки (OS X 10.8 с jdk 7) в ситуации, которая требует много памяти. Я запускаю консоль rails следующим образом:
jruby...
2638 просмотров
schedule
01.04.2022
compareAndSet эффекты памяти неудачных операций
Java предоставляет операцию CAS через свои атомарные классы, например
boolean compareAndSet(expected,update)
JavaDocs указывает эффекты памяти операции compareAndSet следующим образом:
compareAndSet и все другие операции чтения и...
317 просмотров
schedule
03.04.2022
Внутри Java синхронизированный статический метод: происходит до отношения для статической переменной
Гарантируется ли обновление статической переменной внутри синхронизированного метода класса раньше? Используйте это в качестве примера:
public class MyClass {
private static boolean isDone = false;
public static synchronized...
129 просмотров
schedule
17.04.2022
Эффекты одновременного доступа к несинхронизированному Java ArrayList
Представьте себе следующий сценарий:
У меня есть стандартная Java ArrayList<String> .
Доступ к этому ArrayList<String> осуществляется несколькими потоками без явной синхронизации с учетом следующих ограничений:
Одновременно...
183 просмотров
schedule
28.04.2022
Определяет ли последний JMM, что синхронизированный блок является атомарным для других потоков, даже асинхронных?
Когда я прочитал статью о ДВОЙНОЙ ПРОВЕРКЕ БЛОКИРОВКИ на http://www.javaworld.com/article/2074979/java-concurrency/double-checked-locking--clever--but-broken.html я встречаю комментарий, который говорит: «Следует отметить, что DCL на самом деле...
74 просмотров
schedule
17.05.2022
Java: использование final для локальных переменных
Какая польза от использования ключевого слова final для локальных примитивных переменных в java. Есть ли выигрыш в производительности?
939 просмотров
schedule
29.05.2022
Изменение порядка внешних операций в модели памяти Java
В настоящее время я изучаю модель памяти Java и то, как она влияет на переупорядочение, которое может сделать компилятор. Однако я немного смущен внешними операциями. JMM определяет их как действие, которое можно наблюдать вне операции. Выход из...
93 просмотров
schedule
05.08.2022
Изменение порядка в связи JMM "происходит до"
В JLS написано, что происходит до отношения JMM (раздел 17.4.5):
Следует отметить, что наличие связи между двумя действиями не обязательно означает, что они должны происходить в этом порядке в реализации.
Меня интересуют примеры этого...
327 просмотров
schedule
16.09.2022
Синхронизация модели памяти Java: как вызвать ошибку видимости данных?
«Параллелизм Java на практике» дает следующий пример небезопасного класса, который из-за характера модели памяти Java может в конечном итоге работать вечно или печатать 0.
Проблема, которую пытается продемонстрировать этот класс, заключается в том,...
852 просмотров
schedule
27.02.2023
Как протестировать резервный массив, используемый в Java Sting?
Пока я разрабатывал приложение для Android, мое внимание привлек базовый массив .
Несколько строк могут иметь один и тот же char[], потому что строки неизменяемы. Метод substring(int) всегда возвращает строку, которая разделяет базовый...
837 просмотров
schedule
21.06.2023
Применяется ли в Java новая модель памяти также к члену объекта, который объявлен как volatile?
В новой модели памяти Java любая запись в переменную гарантированно будет завершена до того, как ее прочитает следующий поток.
Интересно, относится ли это также к переменным, которые являются членами этого объекта.
для модели памяти Java:...
353 просмотров
schedule
13.05.2023
Является ли модель памяти Java только для всей Java или на самом деле для всей JVM?
Я вижу, что это всегда называлось Java-Memory-Model, но до сих пор я инстинктивно думал, что это применимо ко всей экосистеме JVM.
Применим ли он только между приложениями, созданными на Java, или любой исполняемый файл, совместимый с байт-кодом...
162 просмотров
schedule
20.12.2022
Окончательное поле, ссылка и безопасная публикация
Рассмотрим следующую нетрадиционную реализацию блокировки с двойной проверкой, которая не использует volatile:
public class ValueProvider {
private static State state = new Initial();
public static Value getValue() {
return...
208 просмотров
schedule
17.12.2022