我的问题与此问题有关,它已经有了答案:
“是的,调用
我的问题更加普遍:是否可能实现一种方法(例如
- 已提交的
在我看来,似乎没有办法在不产生“happens-before”关系的情况下实现这一点,我错了吗?如果是这样,请提供一个可以证明这一点的示例实现。
“是的,调用
invokeLater/invokeAndWait
的线程和提交的Runnable
在EDT上执行的操作之间存在一个'happens-before'关系。”我的问题更加普遍:是否可能实现一种方法(例如
invokeAndWait
),使其正常工作,但不要求发生“happens-before”关系?对于“正常工作”,我是指以下特性:- 已提交的
Runnable
保证只执行一次。
- 已提交的Runnable
在一个特定的线程上执行。
- 该方法等待已提交的Runnable
执行完成。
- 该方法保证在已提交的Runnable
执行完成后返回。在我看来,似乎没有办法在不产生“happens-before”关系的情况下实现这一点,我错了吗?如果是这样,请提供一个可以证明这一点的示例实现。