- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我见过:
if (Display.getCurrent() == null){
PlatformUI.getWorkbench().getDisplay.asyncExec(aRunnable)
} else {
aRunnable.run();
}
PlatformUI.getWorkbench().getDisplay.asyncExec(aRunnable)
asyncExec
替换为
syncExec
时,它还能正确处理吗?
最佳答案
它是从UI线程调用时syncExec
或asyncExec
如何操作的实现细节。 documentation指出:
Causes the run() method of the runnable to be invoked by the user-interface thread at the next reasonable opportunity.
Runnable
可以简单地放入队列中,并在下一个调度循环中执行,可能在其他
Runnable
之后。如果在UI线程上专门调用
run
的
Runnable
方法,则可以对其调度进行更多控制。
syncExec
和
asyncExec
的行为可能会有所不同。我似乎还记得,从UI线程调用
syncExec
时将立即执行,并且
asyncExec
始终将其工作排入队列,但是同样,这是实现细节,不能保证。
asyncExec
的每个实例替换为
syncExec
的实例。
syncExec
将等待有问题的可运行对象由UI线程发布和执行,这可能会引起严重的争用问题。想象一下这段代码在非UI线程上运行:
synchronized(foo)
{
display.asynExec(new Runnable() {
public void run()
{
synchronized(foo)
{
System.out.println("Hello!");
}
}
});
}
asyncExec
调用将使该可运行对象排队并返回,这将退出
synchronized
块,以便UI线程上的可运行对象以后可以获取锁。但是,用
syncExec
替换它肯定会死锁。
asyncExec
,除非您认为需要
syncExec
的执行保证。
关于eclipse - 从UI线程调用PlatformUI.getWorkbench()。getDisplay()。syncExec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21385727/
我见过: if (Display.getCurrent() == null){ PlatformUI.getWorkbench().getDisplay.asyncExec(aRunnable)
我需要在应用程序关闭和启动之间执行一些操作。 所以我正在编写 PlatformUI.getWorkbench().close() 来关闭应用程序,并且正在执行我需要的操作。现在我不知道如何重新启动工作
最近我们将 rcp 应用程序升级到了 e4。我们正在使用火星。我正在尝试 e4 事件总线。我将 PlatformUI.getWorkbench().getService(IEventBroker.cl
我关注了这篇文章Get TreeViewer in RCP from another Plugin 。当我将此代码添加到处理程序时,出现异常“java.lang.IllegalStateExcepti
调用 PlatformUI.getWorkbench().restart() 方法后,应用程序只是关闭并拒绝重新启动产品。 最佳答案 您的 IApplication 需要检查 start 方法中 Pl
我是一名优秀的程序员,十分优秀!