SWT 的多线程

前段时间的工作里需要做个 GUI 工具,要用 Java 里的 SWT。以前完全没接触过 SWT,就玩过一阵 SWING。其他没什么,就是多线程的时候似乎比 SWING 麻烦点,后台干活跟窗口里面的进度条之间的配合碰到了问题。google 了一下,看了123等网页,克服代码里碰到的问题后,总结如下:

1.干活是一个线程,UI是另一个线程,不要在干活的线程里牵扯到UI的操作。可以在干活的线程里用设boolean类型变量的方法,通知UI线程做相应变化。
2.使用Display.syncexec/asyncexec(Runnable) 来执行非主线程的代码。

大概的样子就是如下

public work() {
aaa().start();
bbb().start();

}

private Thread aaa() {
return new Thread() {
public void run() {
/* 干活 */
}
};

}

private Thread bbb() {
return new Thread() {
public void run() {
Display.getDefault().asyncExec(new Runnable() {
public void run() {
/* UI操作 */
}
});
}
};
}

Topic: 技术

评论

这个bt的blog,最近t很少发文呀。gui?可以试试Qt, PyQt,hoho

装修,很充实啊

需要调项目里写好的许多方法,所以用 Java 了。否则抓机会学学 python 的 gui 也挺好