SWT 的多线程
前段时间的工作里需要做个 GUI 工具,要用 Java 里的 SWT。以前完全没接触过 SWT,就玩过一阵 SWING。其他没什么,就是多线程的时候似乎比 SWING 麻烦点,后台干活跟窗口里面的进度条之间的配合碰到了问题。google 了一下,看了1,2,3等网页,克服代码里碰到的问题后,总结如下:
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操作 */
-
}
-
});
-
}
-
};
-
}
- 查看更多 about SWT 的多线程
- 2 则评论
- 登录以发表评论
最新评论