界面与后台工作线程分离的实现方案

在我们实际应用中,常常会遇到界面与后台工作线程分离的情况。特别是在写多线程的服务程序和批处理程序时经常用到的,随着技术的发展,人们已经不满足于命令行的服务程序,需要具有更好的可视化的、图形化的界面服务程序,能够实时监控各个后台工作线程的状态。经过一些实践我在这里总结一些将后工作线程与显示界面分离的较好的实现方案,供大家参考,希望能够给大家一些启示:

首先,假设我们的系统由一个或者多个工作线程,这些线程可能是永久服务线程,也可能是临时工作线程,它们都负责处理一定的任务,而我们的界面上需要实时显示各个工作线程的工作情况及状态。在这种情况下可用如下的实现方案:

方案一:

1、对每一个工作线程尽可能地抽象成一个工作对象类,并封装能够表示它工作状态的各种属性(成员变量)及获得和属性的方法。

2、界面窗口需要启动一个显示更新线程,每隔一定的时间间隔从各各线程对象中获取其属性并在界面上显示。

方案:

1、对每一个工作线程尽可能地抽象成一个工作对象类,在让对象开始工作时传界面类对象指针给工作线程,一旦属性值和状态发生变化就及时地通过这个指针调用界面类的方法去及时更新。

2、界面不需要启动特别的更新显示线程。

我在实际应用中,两种方案都使用过了,这两种方案根据不同的应用都可以采用,只是第一个方案独立性和扩展性比较好,而第二种则不然。但是第二种方案可以及时地更新界面,能够将工作线程的状态实时反应地界面上。(注:多个线程访问同一个显示对象和属性值时需要加锁,对于锁的设计也是小心,否则会有数据不一致现象,尽量采用一次性加锁。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值