`

一个多线程程序中控制的功能设计和分析(ing)

阅读更多

用了一周半的时间编写了这么一个程序,该程序是一个多线程的系统,除了最上边的两个方块不是线程外,下面的方块都是系统运行过程中的线程,而圆柱型就是队列,各个线程之间主要通过队列来交互,也有通过线程去触发另外线程的运行的交互方式!

 

程序从启动到运行都正常,但是当初编写程序的时候,没有考虑如何关闭程序! 默认关闭的方式是直接杀掉进程,这种方式会造成程序停止运行后一些存储在队列的消息不能被处理,这样会造成数据处理的缺失!

 

所以需要需要在原有的系统中添加正常的停止功能:因为涉及到多线程之前的交互,比运行的时候复杂一些;我需要好好履一履多线程的知识,然后对系统进行改造!

程序的结构图如下:

 


 

 

 

====================================================================================================

 

最终的停止程序的的时候按照如下的顺序停止各个线程:

A.扫描任务执行器;

B.指标包含多张表的情况处理器;

 

C.性能数据查询分派器(包括D.性能数据查询执行器的线程池)

E.性能数据查询结果分派器;(包括F:查询结果处理执行器;)

解决方案:
在启动各个执行器的时候,将执行器按照上面的顺序压入一个FIFO的队列中,并启动一个线程(系统监控线程G)单独维护这个队列(这个线程负责监听关闭程序的消息请求,在接收到关闭程序请求的时候执行关闭操作);
如何进行关闭呢,这里有两个关键点:
1. 每个执行器需要实现一个接口,接口中有stop方法,该方法去触发执行器进行停止的操作;
2. 每个执行器通过ExecutorService的submit方法来运行,同时会返回一个Future对象,可以对Future对象调用get方法来判断线程是否结束;

这样一个基本的流程就出来了:

 

系统监控线程G接收关闭程序的消息请求;

系统监控线程G从队列中依次取出取出执行器和对应的Future对象,调用执行器的stop方法,然后通过Future的get方法来判断线程是否结束;

 

 

  • 大小: 47.3 KB
分享到:
评论

相关推荐

    POSIX多线程程序设计.pdf

    《POSIX多线程程序设计》深入描述了IEEE的开放系统接口标准——POSIX线程,通常称为Pthreads标准。本书首先解释了线程的基本概念,包括异步编程、线程的生命周期和同步机制;然后讨论了一些高级话题,包括属性对象、...

    多线程程序设计——笔记

    多线程程序设计是计算机科学中的一门重要技术,旨在提高程序的执行效率和响应速度。多线程程序设计学习笔记,内容详尽、实用,本笔记中将详细介绍多线程程序设计的基本概念、线程的创建和管理、线程同步和通信、线程...

    Win32 多线程程序设计完全手册PDF,本书详细讲解了多线程程序设计。

    在计算机科学中,多线程是并行处理的一种方式,它允许一个应用程序同时执行多个任务,从而提高了系统的效率和响应速度。Win32 API提供了丰富的功能来支持多线程编程,使得开发者能够构建复杂且高效的软件。 本书...

    Win32多线程程序设计.pdf(带目录)

    《Win32多线程程序设计》一书深入探讨了在Windows操作系统环境下,利用C++进行多线程编程的技术和方法。多线程是现代软件开发中的关键概念,尤其是在资源密集型应用、实时系统和高性能计算领域。通过合理地利用多...

    POSIX多线程程序设计

    POSIX多线程程序设计是面向有经验的C语言程序员的高级技术参考书籍,由David R. Butenhof撰写,并由于和厦曾刚翻译成中文版,该书详细介绍了基于IEEE开放系统接口标准的POSIX线程,也就是通常所说的Pthreads标准。...

    Win32多线程程序设计(清晰 )

    Win32多线程程序设计是计算机编程领域中一个重要主题,特别是对于使用Windows操作系统的开发者来说,理解如何设计和实现多线程程序是至关重要的。侯捷翻译的这本书深入讲解了Win32平台下多线程程序设计的核心概念、...

    多线程设计一个火车售票模拟程序

    "多线程设计一个火车售票模拟程序" 在本实验中,我们将使用 Java 语言来设计一个火车售票模拟程序。这个程序模拟了火车站中的售票情况,具有5个售票点,每个售票点都可以售出火车票。我们将使用多线程技术来实现这...

    Win32 多线程程序设计(pdf)

    在多线程程序中,资源管理也是一个重要的话题。线程可以拥有自己的堆栈空间,但全局变量和动态分配的内存通常是共享的,需要特别小心处理。`ExitThread`函数用于结束线程的执行,而`CloseHandle`函数用于关闭线程...

    Win32多线程程序设计.pdf

    总之,《Win32多线程程序设计》全面讲解了在Win32环境下如何高效、稳定地开发多线程应用程序,对于理解和实践Windows平台的多线程编程具有重要的指导价值。通过学习这本书,开发者可以掌握创建、管理和优化多线程...

    Win32多线程程序设计(pdf加全书签)

    《Win32多线程程序设计》是一本深入探讨C++在Win32平台上实现多线程编程的专业书籍。该书全面覆盖了多线程技术的基础理论与实践应用,为开发者提供了详尽的指导。书中的"加全书签"功能使得读者能够更方便地定位和...

    Posix多线程程序设计(中文版)pdf

    在本文件中提到的《Posix多线程程序设计(中文版)pdf》中,详细介绍了线程的概念、线程的创建和使用、线程的同步、线程高级编程技巧以及POSIX标准的演进等内容,是学习和使用POSIX线程库的重要参考书籍。...

    深入浅出Win32多线程程序设计.pdf

    - **多进程单线程**:如大多数UNIX和Linux系统,允许多个进程但每个进程中只有一个线程。 - **多进程多线程**:如Win32系统(Windows NT/2000/XP等),支持多个进程以及每个进程中的多个线程。 - **单进程多线程**:...

    操作系统 多线程演示程序

    总结来说,"操作系统 多线程演示程序"是一个教学工具,它利用VC++的多线程功能和信号量机制,为学习者提供了一个互动平台,以理解多线程环境中的并发控制和资源管理。通过实际操作,用户可以深入理解操作系统中的...

    多线程 小球 运行程序(eclipse工程可导入)

    标题中的“多线程 小球 运行程序(eclipse工程可导入)”表明这是一个与多线程编程相关的项目,可能是用Java语言实现的,因为Eclipse是Java开发的常用集成开发环境。这个程序可能设计了一个模拟小球运动的场景,通过多...

    C++多线程网络聊天程序 .zip

    通过解压并分析源代码,我们可以深入理解多线程在网络聊天程序中的具体应用和实现细节,这对于学习C++多线程编程和网络编程来说是一个很好的实践案例。同时,这也为我们提供了改进和优化聊天程序的机会,例如,使用...

    c#多线程程序设计,IP地址dns域名解析

    在IT领域,多线程程序设计是提升程序性能和响应速度的重要手段,特别是在处理大量并发任务时。C#作为微软开发平台的主要编程语言,提供了强大的多线程支持。本项目"c#多线程程序设计,IP地址dns域名解析"正是结合了...

    win32多线程程序设计.pdf

    侯俊杰翻译的多线程程序设计的书,讲的不错。该电子书为pdf格式,比较清晰。win32多线程程序设计第一部分(一共三部分)

    javad多线程

    Java 多线程编程是指在一个程序中可以运行多个线程,以提高程序的执行效率和响应速度。在 Java 中,多线程编程可以通过 Thread 类和 Runnable 接口来实现。 为什么需要多线程? 在单线程程序中,如果某个任务需要...

    深入浅出Win32多线程程序设计之综合实例

    多线程是指在一个应用程序中同时执行多个独立的执行线程,这些线程可以并行处理不同的任务,提高程序的运行效率和响应速度。在Windows操作系统中,多线程编程是实现并发操作的关键技术,尤其在需要进行复杂计算或IO...

    一个多线程示例程序及多线程常见问题介绍

    在IT领域,多线程是程序设计中的一个重要概念,它允许程序同时执行多个任务,显著提高了计算机系统的效率和响应速度。C++Builder是一款强大的集成开发环境(IDE),它支持C++语言,为开发者提供了创建多线程应用的...

Global site tag (gtag.js) - Google Analytics