SWT学习笔记(二) SWT中的多线程

本文介绍了SWT中多线程的使用,包括asyncExec、syncExec和timerExec的区别与应用场景。强调了非UI线程直接操作UI组件会导致Invalid thread access异常,并提供了正确的线程操作UI组件的方式,以及对长时间运行任务的处理建议。
摘要由CSDN通过智能技术生成

      今天比较郁闷在写一个swt的线程程序时搞了4个多小时,晕啊!

      SWT中的多线程机制和awt/swing中有些不同,这个大家应该都知道,不过还是要说下,

Display对象中负责调用其他线程的方法有以下3种:

  ● asyncExec(Runnable runnable):异步启动新的线程。所谓异步就是,UI线程不会等待runnable对象执行结束后再继续进行,就是说UI线程可以和runnable对象所在的线程同时运行。

  ● syncExec(Runnable runnable):同步启动新的线程。所谓同步就是,UI线程会等待runnable对象执行结束后才会继续进行,当runnable对象是耗时大的线程时,尽量不要采用此种方式。另外,对于该种方式创建的线程可通过getSyncThread()方法获得线程对象。

  ● timerExec(int milliseconds,Runnable runnable):指定一段时间再启动新的线程。用此方法创建的线程,将会在指定的时间后再启动线程。当然用此方法创建的线程启动后,与UI线程是异步的。如果指定的时间为负数,将不会按时启动线程。

另外Display对象中,与UI线程相关的方法如下所示:

  ● 获得当前的UI线程对象的方法:getThread(),返回Thread对象。

  ● 使UI线程处于休眠状态:sleep()。

  ● 唤醒UI线程:wake()。

  上面几点都是书里面的原话,不做阐述了.下面我要说的是一个写法的问题,不能小瞧啊,后果很严重.

如果有一个线程他要做的事需要很久比如5分钟,像我这样的初学swt的人一定是new了一个线程然后

getDisplay().asyncExec(线程对象); 结果虽然执行成功,但是界面确

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值