一个多线程程序中控制的功能设计和分析(ing)
用了一周半的时间编写了这么一个程序,该程序是一个多线程的系统,除了最上边的两个方块不是线程外,下面的方块都是系统运行过程中的线程,而圆柱型就是队列,各个线程之间主要通过队列来交互,也有通过线程去触发另外线程的运行的交互方式!
?
程序从启动到运行都正常,但是当初编写程序的时候,没有考虑如何关闭程序! 默认关闭的方式是直接杀掉进程,这种方式会造成程序停止运行后一些存储在队列的消息不能被处理,这样会造成数据处理的缺失!
?
所以需要需要在原有的系统中添加正常的停止功能:因为涉及到多线程之前的交互,比运行的时候复杂一些;我需要好好履一履多线程的知识,然后对系统进行改造!
程序的结构图如下:
?

?
?
?
====================================================================================================
?
最终的停止程序的的时候按照如下的顺序停止各个线程:
A.扫描任务执行器;
B.指标包含多张表的情况处理器;
?
C.性能数据查询分派器(包括D.性能数据查询执行器的线程池)
E.性能数据查询结果分派器;(包括F:查询结果处理执行器;)?
系统监控线程G接收关闭程序的消息请求;
系统监控线程G从队列中依次取出取出执行器和对应的Future对象,调用执行器的stop方法,然后通过Future的get方法来判断线程是否结束;
?
?