当前位置:  开发笔记 > 编程语言 > 正文

从syncExec返回变量的最佳方法是什么?

如何解决《从syncExec返回变量的最佳方法是什么?》经验,为你挑选了1个好方法。

在我的SWT Java应用程序中,我经常想从Display.syncExec()调用中返回信息.到目前为止,我发现这样做的最好方法是:

final ArrayList result = new ArrayList();
GUI.display().syncExec(new Runnable(){ public void run() {
   MessageBox mb = /* ... */;
    /* set up messagebox */
   result.add(mb.open());
}});
if (SWT.OK == result.get(0)) { /* ... */ }

我认为这是允许的,因为ArrayList是线程安全的,但是我应该使用更好的容器,还是更简单的方法?



1> Heath Border..:

ArrayList不是线程安全的.你可以获得一个线程安全ListCollections.synchronizedList.但是,AtomicInteger在您的情况下或AtomicReference在更一般的情况下使用它更简单.

final AtomicInteger resultAtomicInteger = new AtomicInteger();
Display.getCurrent().syncExec(new Runnable() { 
    public void run() {
        MessageBox mb = /* ... */;
            /* set up messagebox */
        resultAtomicInteger.set(mb.open());
}});
if (SWT.OK == resultAtomicInteger.get()) { /* ... */ }

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有