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

Вставка инструкций Fence с помощью JVM/JIT
Модель памяти Java дает гарантию DRF (свобода гонки данных), что означает, что программа, свободная от гонки данных, при выполнении в модели расслабленной памяти Java будет давать то же поведение, что и при последовательном последовательном...
741 просмотров
schedule 04.03.2022

Является ли JAXB безопасным для одновременного доступа (как это делается)
Я предполагаю, что JAXB вызывает конструктор с нулевым аргументом, а затем начинает заполнять энергонезависимые поля и добавлять данные в списки. В моем собственном коде: сразу после выполнения этого действия (десортировки) сгенерированные...
4745 просмотров

Есть ли инструмент для определения того, правильно ли синхронизирована программа, как определено в JLS?
Спецификация языка Java 7 (JLS7-17.4.5) определяет «правильно синхронизированную» программу следующим образом: «Программа правильно синхронизирована тогда и только тогда, когда все последовательно согласованные выполнения свободны от гонок данных»....
197 просмотров
schedule 29.04.2023

Отношение «происходит до» в модели памяти Java
Что касается JLS ch17 Threads and Locks , в нем говорится: "если произойдет одно действие -перед другим, то первый виден и упорядочен перед вторым"; Я думаю: (1) Что на самом деле означает фраза «заказано раньше»? Потому что даже если...
655 просмотров

Видимость значения
Сейчас я читаю Java Concurrency in Practice и кое-что не могу понять. public class NoVisibility { private static boolean ready; private static int number; private static class ReaderThread extends Thread { public void run() { while (!ready)...
31 просмотров
schedule 04.11.2023

Может ли планировщик приостановить один поток и выполнить другой поток/работу?
Пусть у нас есть следующий код (мы будем запускать его на одноядерном процессоре): Runnable runnable1 = new Runnable() { @Override public void run() { System.out.println("runnable_1_1"); System.out.println("runnable_1_2");...
136 просмотров

Прочитать устаревшее значение поля после построения объекта
Я читаю книгу Брайана Гетца о параллелизме в Java на практике. Пункты 3.5 и 3.5.1 содержат утверждения, которые я не могу понять. Рассмотрим следующий код: public class Holder { private int value; public Holder(int value) { this.value =...
590 просмотров

Ленивая инициализация/запоминание без volatile
Похоже, что модель памяти Java не определяет «обновление» и «очистку» локального кеша, вместо этого люди называют это так только для простоты, но на самом деле отношение «происходит до» подразумевает как-то обновление и очистку (было бы здорово, если...
604 просмотров

java - изменчивая семантика в ConcurrentHashMap
В ConcurrentHashMap JDK 8 методы tabAt и setTabAt используются для обеспечения энергозависимого чтения / записи первого элемента бинов в Node<K,V>[] table . Однако авторы отмечают, что: Обратите внимание, что вызовы setTabAt всегда...
164 просмотров

Как получать периодические дампы кучи для моей Java-программы через равные промежутки времени в формате csv (без jprofiler)
Я хотел получать дампы кучи для своего универсального Java-приложения через равные промежутки времени в виде CSV-файлов. Допустим, у меня есть программа public class Test { public static void main(String[] args) throws Exception { // Code...
51 просмотров

Может ли поток сначала получить объект через безопасную публикацию, а затем опубликовать его небезопасно?
Этот вопрос возник у меня после прочтения этого ответа . Пример кода: class Obj1 { int f1 = 0; } volatile Obj1 v1; Obj1 v2; Thread 1 | Thread 2 | Thread 3 ------------------------------------------------- var o = new Obj1(); |...
364 просмотров

Многопоточное поведение со статическими членами
Как ведет себя многопоточность в случае статических членов? Как и в случае с классом Singleton, если я попытаюсь создать экземпляр в статическом блоке и в статическом методе, я верну экземпляр, и два потока попытаются выполнить getInstance()...
68 просмотров