小编use*_*797的帖子

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

很确定它是这样的 - 但我想确定地知道 - 在 invokeLater() 或 invokeAndWait() 的情况下给出的关系是发生在之前吗?

这些方法在(分别为 SwingUtilities)AWT.EventQueue 中定义。我想当在 EventQueue 中输入一些东西时会涉及同步,因此作为同步的结果,发生了关系,最后给出了可见性。

但真的是这样吗?(我在哪里可以找到这些信息?)


例如在一些工作线程内

    ...
    *<1> heavy computation modifying lots of DATA*
    ...
    SwingUtilities.invokeLater(
        new Runnable() {
            @Override
            public void run() {
                *<2> is visibility of modified DATA guaranteed?*
            }
        }
    );
Run Code Online (Sandbox Code Playgroud)

例如在一些线程内

    ...
    SwingUtilities.invokeAndWait(
        new Runnable() {
            @Override
            public void run() {
                ...
                *<1> change some DATA*
            }
        }
    );
    *<2> is visibility of modified DATA guaranteed?*
Run Code Online (Sandbox Code Playgroud)

java swing invokelater event-dispatch-thread happens-before

5
推荐指数
1
解决办法
330
查看次数