PlatformUI.createDisplay()确保通过UI线程创建Display对象吗?

时间:2015-01-29 07:06:19

标签: java user-interface thread-safety swt eclipse-rcp

我应该如何确保仅通过UI线程创建Display对象?

PlatformUI。createDisplay()确保通过UI线程创建Display对象吗?

1 个答案:

答案 0 :(得分:0)

如果尚未创建显示,

PlatformUI.createDisplay基本上只会执行new Display()。它旨在像IApplication这样使用:

public class Application implements IApplication
{
  @Override
  public Object start(final IApplicationContext context)
  {
    final Display display = PlatformUI.createDisplay();
    try
     {
       final int returnCode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor());
       if (returnCode == PlatformUI.RETURN_RESTART)
         return IApplication.EXIT_RESTART;

        return IApplication.EXIT_OK;
     }
    finally
     {
       display.dispose();
     }
  }

将创建显示并使用当前线程作为用户界面线程运行RCP。

在Mac OS X上,还需要-XstartOnFirstThread参数来获取正确的UI线程。