当前位置

SWT 的多线程

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

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

大概的样子就是如下

  1. public work() {
  2.         aaa().start();
  3.         bbb().start();
  4. }
  5.  
  6. private Thread aaa() {
  7.         return new Thread() {
  8.                 public void run() {
  9.                         /* 干活 */
  10.                 }
  11.         };
  12. }
  13.  
  14. private Thread bbb() {
  15.         return new Thread() {
  16.                 public void run() {
  17.                         Display.getDefault().asyncExec(new Runnable() {
  18.                                 public void run() {
  19.                                         /* UI操作 */                         
  20.                                 }
  21.                         });
  22.                 }
  23.         };
  24. }
Topic: 

评论

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

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