use*_*797 5 java swing invokelater event-dispatch-thread happens-before
很确定它是这样的 - 但我想确定地知道 - 在 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)