Вопросы по теме 'java-memory-model'

Как CopyOnWriteArrayList может быть поточно-ориентированным?
Я просмотрел исходный код OpenJDK _ 1_ , и кажется, что все операции записи защищены одной и той же блокировкой, а операции чтения вообще не защищены. Насколько я понимаю, в JMM все обращения к переменной (как на чтение, так и на запись) должны...
17279 просмотров

Является ли установка потокобезопасной HashMap?
У меня есть HashMap в моей программе, к которой обращаются несколько потоков, и иногда она устанавливается одним потоком. Например: Map<String, String> myMap = new HashMap<String, String>(); Доступ к нему осуществляется...
5443 просмотров

Можно ли изменить порядок операций, которые последовательно присваивают значения нескольким изменчивым полям?
Всегда ли следующий код будет распечатывать «правильное» значение данных ? Даже если есть другие операции между присвоением значений data и dataReady в методе setData ? Или же JVM могла бы изменить порядок этих операций так, чтобы...
63 просмотров

Параллелизм Java: безопасная публикация массива
Мой вопрос чрезвычайно прост: как только я записал некоторые значения массива одним или несколькими потоками (фаза 1), как я могу «опубликовать» свой массив, чтобы все изменения были видны другим потокам (фаза 2)? У меня есть код, который выполняет...
162 просмотров

Для чего в Java используются ограждения памяти?
Пытаясь понять, как SubmissionPublisher ( исходный код в Java SE 10, OpenJDK | docs ), новый класс, добавленный в Java SE в версии 9, был реализован, я наткнулся на несколько вызовов API на _ 2_ Раньше я не знал: fullFence , acquireFence ,...
715 просмотров

Чтение и запись локальных переменных Long и Double в Java
Известно, что «чтение / запись в» энергонезависимые переменные типа long и double могут быть неатомарными. Это касается статических и нестатических полей и массивов. А как насчет соответствующих длинных / двойных локальных переменных. Атомные они...
195 просмотров
schedule 28.02.2022

Что заставляет неизменяемые объекты публиковаться без безопасных методов публикации?
Что значит сказать, что неизменяемые объекты можно публиковать, даже не прибегая к идиомам безопасной публикации? Я прочитал Параллелизм в Java на практике ( Глава 3, Совместное использование объектов ), но до сих пор не могу понять утверждение:...
564 просмотров

OutOfMemoryError: пространство кучи Java при запуске jruby на консоли rails, но не с использованием всей памяти, определенной параметром -J-Xmx
У меня есть приложение rails 3, использующее jruby 1.7, и я пытаюсь использовать консоль rails в своей локальной среде разработки (OS X 10.8 с jdk 7) в ситуации, которая требует много памяти. Я запускаю консоль rails следующим образом: jruby...
2638 просмотров

compareAndSet эффекты памяти неудачных операций
Java предоставляет операцию CAS через свои атомарные классы, например boolean compareAndSet(expected,update) JavaDocs указывает эффекты памяти операции compareAndSet следующим образом: compareAndSet и все другие операции чтения и...
317 просмотров

Внутри Java синхронизированный статический метод: происходит до отношения для статической переменной
Гарантируется ли обновление статической переменной внутри синхронизированного метода класса раньше? Используйте это в качестве примера: public class MyClass { private static boolean isDone = false; public static synchronized...
129 просмотров

Эффекты одновременного доступа к несинхронизированному Java ArrayList
Представьте себе следующий сценарий: У меня есть стандартная Java ArrayList<String> . Доступ к этому ArrayList<String> осуществляется несколькими потоками без явной синхронизации с учетом следующих ограничений: Одновременно...
183 просмотров

Определяет ли последний JMM, что синхронизированный блок является атомарным для других потоков, даже асинхронных?
Когда я прочитал статью о ДВОЙНОЙ ПРОВЕРКЕ БЛОКИРОВКИ на http://www.javaworld.com/article/2074979/java-concurrency/double-checked-locking--clever--but-broken.html я встречаю комментарий, который говорит: «Следует отметить, что DCL на самом деле...
74 просмотров

Java: использование final для локальных переменных
Какая польза от использования ключевого слова final для локальных примитивных переменных в java. Есть ли выигрыш в производительности?
939 просмотров
schedule 29.05.2022

Изменение порядка внешних операций в модели памяти Java
В настоящее время я изучаю модель памяти Java и то, как она влияет на переупорядочение, которое может сделать компилятор. Однако я немного смущен внешними операциями. JMM определяет их как действие, которое можно наблюдать вне операции. Выход из...
93 просмотров

Изменение порядка в связи JMM "происходит до"
В JLS написано, что происходит до отношения JMM (раздел 17.4.5): Следует отметить, что наличие связи между двумя действиями не обязательно означает, что они должны происходить в этом порядке в реализации. Меня интересуют примеры этого...
327 просмотров
schedule 16.09.2022

Синхронизация модели памяти Java: как вызвать ошибку видимости данных?
«Параллелизм Java на практике» дает следующий пример небезопасного класса, который из-за характера модели памяти Java может в конечном итоге работать вечно или печатать 0. Проблема, которую пытается продемонстрировать этот класс, заключается в том,...
852 просмотров

Как протестировать резервный массив, используемый в Java Sting?
Пока я разрабатывал приложение для Android, мое внимание привлек базовый массив . Несколько строк могут иметь один и тот же char[], потому что строки неизменяемы. Метод substring(int) всегда возвращает строку, которая разделяет базовый...
837 просмотров

Применяется ли в Java новая модель памяти также к члену объекта, который объявлен как volatile?
В новой модели памяти Java любая запись в переменную гарантированно будет завершена до того, как ее прочитает следующий поток. Интересно, относится ли это также к переменным, которые являются членами этого объекта. для модели памяти Java:...
353 просмотров

Является ли модель памяти 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 просмотров