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

Неустойчивые гарантии и исполнение вне очереди
ВАЖНОЕ РЕДАКТИРОВАНИЕ . Я знаю о "происходит до" в потоке, в котором выполняются два назначения , мой вопрос: возможно ли это для другого потока читать «b» не равным нулю, пока «а» все еще равно нулю. Итак, я знаю, что если вы вызываете doIt ()...
9760 просмотров
schedule 18.03.2023

Параллельный доступ Java к полю, трюк, чтобы не использовать volatile
Предисловие: я знаю, что в большинстве случаев использование volatile поля не приведет к измеримому снижению производительности, но этот вопрос более теоретический и нацелен на дизайн с чрезвычайно высокой поддержкой корректности. У меня есть поле...
784 просмотров

Влияет ли выполнение большого количества потоков ввода-вывода на производительность нескольких потоков, интенсивно использующих процессор?
Допустим, у меня есть 6-ядерная машина с 12 МБ кеш-памяти. Я использую его для серверного приложения, у которого есть несколько гигабайт кучи (большая часть из них - кеш Hibernate 2-го уровня). Я заметил, что большую часть времени у меня есть...
785 просмотров
schedule 04.04.2022

Эффект синхронизации Java при блокировке с двойной проверкой?
Я прочитал разные статьи, такие как дважды проверено блокировка: умно, но не работает , и я понимаю причину, по которой следующий код не работает при использовании многопоточности. class SomeClass { private Resource resource = null; public...
535 просмотров

final vs volatile guaranntee w.rt для безопасной публикации объектов
Из книги Java concurrency на практике: Чтобы безопасно опубликовать объект, и ссылка на объект, и его состояние должны быть видны другим потокам одновременно. Правильно сконструированный объект можно безопасно опубликовать:...
5324 просмотров
schedule 23.04.2023

Интерпретация правила порядка выполнения программы в параллелизме Java
Правило порядка выполнения программы гласит: «Каждое действие в потоке происходит до каждого действия в этом потоке, которое происходит позже в порядке выполнения программы». 1. Я прочитал в другой теме что действие читает и пишет в...
3639 просмотров
schedule 23.10.2022

Какие методы синхронизации JVM можно игнорировать, если я знаю, что буду работать на процессоре x64?
Я знаю, что модель памяти JVM предназначена для наименьшего общего знаменателя процессоров, поэтому она должна предполагать самую слабую возможную модель процессора, на котором может работать JVM (например, ARM). Теперь, учитывая, что x64 имеет...
509 просмотров
schedule 02.05.2022

Безопасная публикация стандартной коллекции, не поддерживающей потокобезопасность
Правильно ли я понимаю, что следующий фрагмент кода безопасен с точки зрения публикации стандартной коллекции, которая по своей сути не является потокобезопасной ( HashSet в этом примере), потому что ни один из потоков не изменяет коллекцию после...
74 просмотров

Java: каков правильный способ гарантировать, что неконечное поле ссылки никогда не будет прочитано как нулевое?
Я пытаюсь решить простую проблему и попадаю в кроличью нору модели памяти Java. Каков самый простой и/или наиболее эффективный (здесь вызов решения), но свободный от гонки (точно определенный в соответствии с JMM) способ написать класс Java,...
682 просмотров
schedule 03.05.2022

Есть ли у меня проблема с переупорядочением и связано ли это с побегом ссылки?
У меня есть этот класс, в котором я кэширую экземпляры и клонирую их (данные изменяются), когда я их использую. Интересно, могу ли я столкнуться с проблемой повторного заказа с этим. Я просмотрел этот ответ и JLS, но я еще не уверен. public...
331 просмотров

Правила «происходит до» в модели памяти Java
В настоящее время я готовлюсь к экзамену по параллельному программированию и не понимаю, почему результат этой программы равен 43. Почему x = y + 1 выполняется раньше t.start() ? Я также должен объяснить, что происходит до правил, которые я...
963 просмотров

fork/join, синхронизация необходима для входного массива?
У меня есть большой массив объектов, и я хочу собрать все объекты с определенным значением поля, и поскольку это такой большой массив, я планирую использовать fork/join в java. большой массив разветвляется не путем создания новых подсписков, а...
423 просмотров

Согласованность памяти после выхода из рабочих потоков параллельного потока Java
Учитывая следующий код: final int n = 50; final int[] addOne = new int[n]; IntStream.range(0, n) .parallel() .forEach(i -> addOne[i] = i + 1); // (*) Are the addOne[i] values all visible here? for (int value : addOne) {...
199 просмотров

Гарантия видимости с помощью thenAccept от CompletableFuture
Я пытаюсь понять, есть ли какие-либо гарантии видимости, предоставляемые CompletableFuture . Предположим, у меня есть класс с именем SampleClass , который выглядит примерно так: public class SampleClass { private String member1;...
115 просмотров

Переменная экземпляра Java, на которую ссылается локальная переменная. Память, безопасность потоков и финализация
У меня есть класс MyClass, у которого есть метод с переменной - экземпляр OtherClass, как показано ниже. public class Myclass{ public void meth1(){     OtherClass other = new OtherClass(); other.perform();       } } public class...
42 просмотров

Сбор мусора на острове изоляции
Насколько я понимаю, любой объект без ссылки имеет право на сборку мусора, т.е. метод finalize класса должен вызываться при сборе мусора. У меня есть класс ниже и вопрос, почему объекты потока без ссылки в основном классе не вызывают метод finalize...
58 просмотров

Видимость памяти в куче
Возьмите несинхронизированную карту Map<Long,Long> map = new HashMap<>(); Когда мы делаем map.put(1,2) из одного потока, возможно ли, чтобы какой-то другой поток не видел это обновленное значение? Я понимаю, как примитивы и...
29 просмотров
schedule 02.05.2022