SWT中线程异步造成主界面假死解决方案

SWT中线程异步造成主界面假死

今天帮同学调错的时候发现,它的SWT异步之后,主线程直接阻塞,导致用户界面无响应,找了好久,终于找到是下面的原因:

下面我们来看正确的代码:

// 显示时间
		new Thread(new Runnable() {

			@Override
			public void run() {
				while (true) {
					Display.getDefault().asyncExec(new Runnable() {

						@Override
						public void run() {
							Date date = new Date();
							SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
							label_time.setText("当前系统时间:" + format.format(date));

						}
					});

					try {
						Thread.sleep(1000);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}

			}
		}).start();

因为它的写法是 在 Display.getDefault().asyncExec里面while(true)来执行更新操作,但是这样会导致主线程直接假死,因此要在 主线程中new另外一个线程和主线程做并发操作让另外一个线程来更新资源

要先new 一个线程然后在线程里面调用SWT中的异步方法

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值