Описание тега happens-before
Happens-before относится к многопоточным приложениям, в которых логика возникла до того, как возникла последовательность логики потока.
3
ответа
Построенный nonFinalField и внутренняя Runnable/Thread видимость
Я предполагаю, что это связано с правилом "происходит раньше", но у меня нет конкретного объяснения... Мой вопрос заключается в том, гарантированно ли нить ссылку на "Hello World" потоком "поток"? И нет, я не хочу делать окончательный вариант nonFin…
21 окт '13 в 13:41
2
ответа
Бывает-раньше для прямого ByteBuffer
У меня есть прямой ByteBuffer (вне кучи) в одном потоке, и я могу безопасно опубликовать его в другом потоке, используя один из механизмов, предоставленных мне JMM. Распространяется ли отношение "происходит до" на собственную (вне кучи) память, обер…
01 ноя '17 в 08:38
2
ответа
Отношение "происходит до" в модели памяти Java
Что касается JLS ch17 Threads and Locks, в нем говорится: "если одно действие происходит до другого, то первое видно и упорядочено до второго"; Я думаю: (1) Что на самом деле означает сказать "заказано раньше"? Потому что даже если action_a произойд…
24 дек '14 в 12:16
1
ответ
Java: насколько изменчива гарантия видимости "данных" в этом куске кода?
Class Future { private volatile boolean ready; private Object data; public Object get() { if(!ready) return null; return data; } public synchronized void setOnce(Object o) { if(ready) throw...; data = o; ready = true; } } В нем говорилось: "Если пот…
11 ноя '15 в 00:00
2
ответа
Поток ожидает навсегда для случая уведомления
Возможно ли в каких-то случаях получить "ожидание навсегда" в ThreadA. Я имею в виду, что уведомление выполняется быстрее, чем b.sync.wait(); class ThreadA { public static void main(String [] args) { ThreadB b = new ThreadB(); b.start(); synchronize…
26 сен '13 в 13:13
1
ответ
Согласованность памяти Java для рабочих потоков Executor
Согласно Javadoc, реализация Executor должен соответствовать: Эффекты согласованности памяти: Действия в потоке (A) перед отправкой объекта Runnable исполнителю выполняются до начала его выполнения, возможно, в другом потоке (B). Pheraps из-за моего…
29 янв '19 в 17:40
4
ответа
Способствует ли порядок изменения отношениям "произойдет до"?
// Thread 1 // do A x.store(1, std::memory_order_release); // operation1 // Thread 2 // do B x.store(2, std::memory_order_release); // operation2 // Thread 3 x.load(std::memory_order_acquire); // operation3 Я понял, что если поток 3 читает значение,…
21 фев '19 в 12:43
3
ответа
Java синхронизируется и происходит раньше
Синхронизированный оператор устанавливает отношение "происходит до". Но я не уверен в деталях. В http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/package-summary.html можно прочитать Разблокировка (синхронизированный блок или выход мето…
07 фев '15 в 16:37
3
ответа
Параллельная коллекция происходит до отношений
Сейчас я изучаю параллелизм, и я попытался написать программу, которая должна демонстрировать отношения "до и при использовании" при одновременном сборе. Как указано в пакете java.concurrent: Методы всех классов в java.util.concurrent и его подпакет…
06 сен '15 в 22:26
3
ответа
Применяется ли в Java новая модель памяти также и к члену объекта, который объявлен как volatile?
В новой модели памяти Java любая запись в переменную гарантированно будет завершена до того, как следующий поток прочитает ее. Интересно, это также относится и к переменным, которые являются членами этого объекта. для модели памяти Java: http://www.…
14 июн '13 в 08:37
2
ответа
Есть ли у меня проблема с переупорядочением, и это связано с побегом ссылки?
У меня есть этот класс, где я кеширую экземпляры и клонирую их (данные изменяемы), когда я их использую. Интересно, могу ли я столкнуться с проблемой переупорядочения с этим. Я посмотрел на этот ответ и JLS, но я все еще не уверен. public class Data…
05 окт '17 в 18:44
1
ответ
Будет ли законным для компилятора Java пропускать коды операций getfield после первого доступа?
Я экспериментировал с портом Java некоторого кода C#, и я был удивлен, увидев, что javac 1.8.0_60 испускает getfield код операции каждый раз, когда к объектному полю обращались. Вот код Java: public class BigInteger { private int[] bits; private int…
07 окт '15 в 15:48
1
ответ
В случае invokeLater() или invokeAndWait задано отношение "происходит до"?
Я уверен, что это так, но я хотел бы знать наверняка, есть ли отношение "происходит до" в случае invokeLater() или invokeAndWait()? Методы определены в (SwingUtilities соответственно) AWT.EventQueue. Я предполагаю, что происходит синхронизация, когд…
15 янв '14 в 20:11
5
ответов
Java случается раньше и безопасность потоков
Предположим, у меня есть класс, который упаковывает HashMap следующим образом: public final class MyClass{ private final Map<String, String> map; //Called by Thread1 public MyClass( int size ){ this.map = new HashMap<String, String>( siz…
20 дек '13 в 18:21
0
ответов
Java двойная проверка блокировки синглтона должна использовать ключевое слово volatile?
Привет, у меня есть проблема с двойной проверкой блокировки в шаблоне синглтона в следующем коде: private volatile static DoubleCheckSingleton instance; private DoubleCheckSingleton() {} public static DoubleCheckSingleton getInstance(){ if(instance=…
04 июл '18 в 16:26
2
ответа
"Частичное упорядочение" и "Бывает-до" отношение java
Я читаю следующую книгу Java-параллелизм на практике http://www.informit.com/store/java-concurrency-in-practice-9780321349606 Меня смущает конкретное объяснение относительно отношения "Бывает до". Утверждается, что операции упорядочены путем частичн…
01 окт '13 в 16:08
1
ответ
Многопоточность Java без отношения "до и после"
У меня есть две темы, использующие один и тот же Object obj и как я прочитал все изменения, сделанные в obj от Thread A будет виден для Thread B из-за случившегося до отношений. То, что я хочу сделать, это наоборот, изменение obj в Thread A не будуч…
06 сен '17 в 11:47
3
ответа
Модель памяти Java: изменчивые переменные и происходящие раньше
Я хотел бы уточнить, как происходит связь до того, как работают переменные. Пусть у нас есть следующие переменные: public static int i, iDst, vDst; public static volatile int v; и нить А: i = 1; v = 2; и нить B: vDst = v; iDst = i; Правильны ли след…
14 май '15 в 19:45
1
ответ
C++: может ли один поток видеть вновь выделенный объект как неинициализированный, если он проходит через очередь без блокировки lock?
Я создаю механизм с несколькими потребителями для одного производителя. Я хочу сделать что-то вроде этого, предположим, у меня есть доступ к экземпляру очереди без блокировки, доступной для обоих потоков и переменной условия синхронизации: Тема 1 (п…
01 сен '15 в 09:01
1
ответ
Происходит раньше, т.е. hb(x,y) отличается от hb(y,x)?
Приемлемые ответы после просмотра ответов, комментариев и jls-17.4.2 1) антисимметричное свойство имеет вид, указанный пользователем - user3707125 2) отношение hb между блокировками фактически находится между разблокировкой и блокировкой hb(ul, l), …
02 сен '16 в 01:01