Вопросы по теме 'java-memory-model'
Неустойчивые гарантии и исполнение вне очереди
ВАЖНОЕ РЕДАКТИРОВАНИЕ . Я знаю о "происходит до" в потоке, в котором выполняются два назначения , мой вопрос: возможно ли это для другого потока читать «b» не равным нулю, пока «а» все еще равно нулю. Итак, я знаю, что если вы вызываете doIt ()...
9760 просмотров
schedule
18.03.2023
Параллельный доступ Java к полю, трюк, чтобы не использовать volatile
Предисловие: я знаю, что в большинстве случаев использование volatile поля не приведет к измеримому снижению производительности, но этот вопрос более теоретический и нацелен на дизайн с чрезвычайно высокой поддержкой корректности.
У меня есть поле...
784 просмотров
schedule
06.05.2022
Влияет ли выполнение большого количества потоков ввода-вывода на производительность нескольких потоков, интенсивно использующих процессор?
Допустим, у меня есть 6-ядерная машина с 12 МБ кеш-памяти. Я использую его для серверного приложения, у которого есть несколько гигабайт кучи (большая часть из них - кеш Hibernate 2-го уровня).
Я заметил, что большую часть времени у меня есть...
785 просмотров
schedule
04.04.2022
Эффект синхронизации Java при блокировке с двойной проверкой?
Я прочитал разные статьи, такие как дважды проверено блокировка: умно, но не работает , и я понимаю причину, по которой следующий код не работает при использовании многопоточности.
class SomeClass {
private Resource resource = null;
public...
535 просмотров
schedule
06.11.2022
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 просмотров
schedule
29.07.2023
Java: каков правильный способ гарантировать, что неконечное поле ссылки никогда не будет прочитано как нулевое?
Я пытаюсь решить простую проблему и попадаю в кроличью нору модели памяти Java.
Каков самый простой и/или наиболее эффективный (здесь вызов решения), но свободный от гонки (точно определенный в соответствии с JMM) способ написать класс Java,...
682 просмотров
schedule
03.05.2022
Есть ли у меня проблема с переупорядочением и связано ли это с побегом ссылки?
У меня есть этот класс, в котором я кэширую экземпляры и клонирую их (данные изменяются), когда я их использую.
Интересно, могу ли я столкнуться с проблемой повторного заказа с этим.
Я просмотрел этот ответ и JLS, но я еще не уверен.
public...
331 просмотров
schedule
07.06.2022
Правила «происходит до» в модели памяти Java
В настоящее время я готовлюсь к экзамену по параллельному программированию и не понимаю, почему результат этой программы равен 43. Почему x = y + 1 выполняется раньше t.start() ? Я также должен объяснить, что происходит до правил, которые я...
963 просмотров
schedule
30.12.2022
fork/join, синхронизация необходима для входного массива?
У меня есть большой массив объектов, и я хочу собрать все объекты с определенным значением поля, и поскольку это такой большой массив, я планирую использовать fork/join в java.
большой массив разветвляется не путем создания новых подсписков, а...
423 просмотров
schedule
19.07.2023
Согласованность памяти после выхода из рабочих потоков параллельного потока 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 просмотров
schedule
15.11.2022
Гарантия видимости с помощью thenAccept от CompletableFuture
Я пытаюсь понять, есть ли какие-либо гарантии видимости, предоставляемые CompletableFuture .
Предположим, у меня есть класс с именем SampleClass , который выглядит примерно так:
public class SampleClass {
private String member1;...
115 просмотров
schedule
12.01.2023
Переменная экземпляра Java, на которую ссылается локальная переменная. Память, безопасность потоков и финализация
У меня есть класс MyClass, у которого есть метод с переменной - экземпляр OtherClass, как показано ниже.
public class Myclass{
public void meth1(){
OtherClass other = new OtherClass();
other.perform();
}
}
public class...
42 просмотров
schedule
01.03.2023
Сбор мусора на острове изоляции
Насколько я понимаю, любой объект без ссылки имеет право на сборку мусора, т.е. метод finalize класса должен вызываться при сборе мусора. У меня есть класс ниже и вопрос, почему объекты потока без ссылки в основном классе не вызывают метод finalize...
58 просмотров
schedule
19.04.2023
Видимость памяти в куче
Возьмите несинхронизированную карту
Map<Long,Long> map = new HashMap<>();
Когда мы делаем map.put(1,2) из одного потока, возможно ли, чтобы какой-то другой поток не видел это обновленное значение? Я понимаю, как примитивы и...
29 просмотров
schedule
02.05.2022