happens-before相关内容

Java 发生在关系 invokeAndWait 之前

我的问题与这个问题有关,该问题已有答案: 是的,动作之间存在 happens-before 关系线程调用 invokeLater/invokeAndWait 和对从而提交了可运行的 EDT. 我的问题更笼统一点:是否可以实现一种方法,例如 invokeAndWait,使其正常工作,但不强加发生之前关系?方法正常工作我的意思是: 提交的Runnable保证只执行一次. 提交的 R ..
发布时间:2021-07-13 19:57:42 Java开发

在invokeLater()或invokeAndWait情况下是否给出事前发生关系?

可以肯定是这样-但我想确定- 在invokeLater()或invokeAndWait()的情况下,是发生在事前关系的吗? 方法在(分别为SwingUtilities)AWT.EventQueue中定义. 我猜想在EventQueue中输入内容时会涉及到同步 因此,作为同步的结果,给出了事前发生的关系并最终给出了可见性. 但是真的是那样吗? (在哪里可以找到该信息?) 例如 在某 ..

“部分订购";和发生前关系java

我正在阅读 Java并发实践 我对事前发生关系的具体解释感到困惑. 它表明, 操作是通过偏序进行排序的,该事件称为事前发生 “部分订购" 到底是什么意思? (书中有一个解释,但我不清楚) 解决方案 部分排序意味着并非每对操作都具有关系happens-before. 实际上,并非每对操作都具有这种关系这一事实使您可以同时执行操作. 例如,假设您有操作A, ..
发布时间:2020-07-23 04:53:41 Java开发

Java内存模型中的先发生规则

我目前正在学习并发编程考试,但不明白为什么该程序的输出为43.为什么在t.start()之前执行x = y + 1?我还应该在使用规则之前解释发生的情况. 如果我了解程序顺序规则(线程中的每个动作发生-在该线程中的每个动作都在程序顺序中之后发生),必须在x = y + 1之前执行t.start(),以便线程t复制变量x将为1. public class HappensBefore { ..

“强烈发生在"之前发生了什么?意思是?

在C ++草案标准中,短语“强烈发生在……之前"已多次使用. 例如:终止 [basic.start .term]/5 如果完成了带有静态对象的初始化 存储持续时间强烈地发生在对std :: atexit的调用之前(请参阅 ,[support.start.term]),则将对函数的调用传递给 std :: atexit在调用析构函数之前进行排序 目的.如果对std :: atexit的调 ..

发生在Java内存模型中的关系之前

关于JLS ch17 主题和锁定,它说“如果一个动作发生在另一个动作之前,然后第一个动作在第二个动作之前可见并且在第我想知道: (1)说“之前订购”是什么意思?因为即使action_a发生在action_b之前,action_a可以在action_b之后的某些实现中执行,对吗? (2)如果action_a发生在action_b之前,是否意味着action_a绝不能看到action_b? ..
发布时间:2018-12-12 19:18:30 Java开发

内存一致性 - 发生在Java之前的关系之前

在阅读有关内存一致性错误的Java文档时。我找到与创建发生的两个动作相关的点 - 在关系之前: 当语句调用 Thread时.start(),每个具有 的语句在与该语句的关系发生之前还与 执行的每个语句之间发生 线。新线程可以看到导致创建 新线程的代码的影响。 当线程终止并导致一个 Thread.join()在另一个线程 中返回,然后由终止的 线程执行的所有语句都发生在之前成 ..
发布时间:2018-11-28 20:45:26 Java开发

没有内存屏障的无序写入:数据竞争的唯一可能的原因?

在实际操作中,由Brian Goetz实施Java并发时遇到以下行: 当变量被多个线程 读取并且由至少一个线程写入时,发生变化,但是读取和写入不是通过happens-before 排序的 。一个正确同步的程序是一个 没有数据竞争;正确同步的程序表现出顺序的 一致性,意味着程序中的所有动作似乎都以固定的全局顺序出现。 我的问题是,是不是顺序写的是数据竞争条件在java或可能在其他 ..
发布时间:2016-12-26 19:35:07 Java开发