在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
接着上面的例子,我们来制作一个计时器,呃,这个例子或许有些难,我会讲的尽量详细 我先来介绍启动新线程的方法:
Runnable runnable = new Runnable() {
public void run() { //这里写要运行的代码 } }; Thread clock = new Thread(runnable); clock.start(); 为什么要通过启动新线程来计时呢?这是因为在swt的桌面程序中,会有一个UI线程,也就是主线程,会不断的重绘UI界面,并且处理主线程的事件,如果在主线程上做一个比较耗时的操作,会让界面处于假死状态,而计时器是通过Thread.sheep来实现的,线程会处于阻塞状态,势必会造成UI界面假死,而如果启动新的线程,并不影响主线程,计时的时候,就不会影响主线程的操作了。
我实现了最简单的计时器:从1开始计时,计到10,完成: Runnable runnable = new Runnable() {
你可能会觉得我比较啰嗦,不过我还是要讲一下: 1.clock是我创建的线程,clock.start()启动线程,开始执行run()事件,run()自动执行,无需手动调用 2.本来是简单的一句: text.setText(Integer.toString(temp)); 要这么使用才可以: Display.getDefault().asyncExec(new Runnable() { 因为在其他线程中调用UI线程,需要调用Display.getDefault().asyncExec() 方法,否则没有权限,会报错 3.Thread.sleep(1000);是指线程堵塞1秒钟,通过while循环每隔1秒钟执行一次,达到计时的效果 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论