用了一周半的时间编写了这么一个程序,该程序是一个多线程的系统,除了最上边的两个方块不是线程外,下面的方块都是系统运行过程中的线程,而圆柱型就是队列,各个线程之间主要通过队列来交互,也有通过线程去触发另外线程的运行的交互方式!
程序从启动到运行都正常,但是当初编写程序的时候,没有考虑如何关闭程序! 默认关闭的方式是直接杀掉进程,这种方式会造成程序停止运行后一些存储在队列的消息不能被处理,这样会造成数据处理的缺失!
所以需要需要在原有的系统中添加正常的停止功能:因为涉及到多线程之前的交互,比运行的时候复杂一些;我需要好好履一履多线程的知识,然后对系统进行改造!
程序的结构图如下:
====================================================================================================
最终的停止程序的的时候按照如下的顺序停止各个线程:
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多线程程序设计》深入描述了IEEE的开放系统接口标准——POSIX线程,通常称为Pthreads标准。本书首先解释了线程的基本概念,包括异步编程、线程的生命周期和同步机制;然后讨论了一些高级话题,包括属性对象、...
多线程程序设计是计算机科学中的一门重要技术,旨在提高程序的执行效率和响应速度。多线程程序设计学习笔记,内容详尽、实用,本笔记中将详细介绍多线程程序设计的基本概念、线程的创建和管理、线程同步和通信、线程...
在计算机科学中,多线程是并行处理的一种方式,它允许一个应用程序同时执行多个任务,从而提高了系统的效率和响应速度。Win32 API提供了丰富的功能来支持多线程编程,使得开发者能够构建复杂且高效的软件。 本书...
《Win32多线程程序设计》一书深入探讨了在Windows操作系统环境下,利用C++进行多线程编程的技术和方法。多线程是现代软件开发中的关键概念,尤其是在资源密集型应用、实时系统和高性能计算领域。通过合理地利用多...
POSIX多线程程序设计是面向有经验的C语言程序员的高级技术参考书籍,由David R. Butenhof撰写,并由于和厦曾刚翻译成中文版,该书详细介绍了基于IEEE开放系统接口标准的POSIX线程,也就是通常所说的Pthreads标准。...
Win32多线程程序设计是计算机编程领域中一个重要主题,特别是对于使用Windows操作系统的开发者来说,理解如何设计和实现多线程程序是至关重要的。侯捷翻译的这本书深入讲解了Win32平台下多线程程序设计的核心概念、...
"多线程设计一个火车售票模拟程序" 在本实验中,我们将使用 Java 语言来设计一个火车售票模拟程序。这个程序模拟了火车站中的售票情况,具有5个售票点,每个售票点都可以售出火车票。我们将使用多线程技术来实现这...
在多线程程序中,资源管理也是一个重要的话题。线程可以拥有自己的堆栈空间,但全局变量和动态分配的内存通常是共享的,需要特别小心处理。`ExitThread`函数用于结束线程的执行,而`CloseHandle`函数用于关闭线程...
总之,《Win32多线程程序设计》全面讲解了在Win32环境下如何高效、稳定地开发多线程应用程序,对于理解和实践Windows平台的多线程编程具有重要的指导价值。通过学习这本书,开发者可以掌握创建、管理和优化多线程...
《Win32多线程程序设计》是一本深入探讨C++在Win32平台上实现多线程编程的专业书籍。该书全面覆盖了多线程技术的基础理论与实践应用,为开发者提供了详尽的指导。书中的"加全书签"功能使得读者能够更方便地定位和...
在本文件中提到的《Posix多线程程序设计(中文版)pdf》中,详细介绍了线程的概念、线程的创建和使用、线程的同步、线程高级编程技巧以及POSIX标准的演进等内容,是学习和使用POSIX线程库的重要参考书籍。...
- **多进程单线程**:如大多数UNIX和Linux系统,允许多个进程但每个进程中只有一个线程。 - **多进程多线程**:如Win32系统(Windows NT/2000/XP等),支持多个进程以及每个进程中的多个线程。 - **单进程多线程**:...
总结来说,"操作系统 多线程演示程序"是一个教学工具,它利用VC++的多线程功能和信号量机制,为学习者提供了一个互动平台,以理解多线程环境中的并发控制和资源管理。通过实际操作,用户可以深入理解操作系统中的...
标题中的“多线程 小球 运行程序(eclipse工程可导入)”表明这是一个与多线程编程相关的项目,可能是用Java语言实现的,因为Eclipse是Java开发的常用集成开发环境。这个程序可能设计了一个模拟小球运动的场景,通过多...
通过解压并分析源代码,我们可以深入理解多线程在网络聊天程序中的具体应用和实现细节,这对于学习C++多线程编程和网络编程来说是一个很好的实践案例。同时,这也为我们提供了改进和优化聊天程序的机会,例如,使用...
在IT领域,多线程程序设计是提升程序性能和响应速度的重要手段,特别是在处理大量并发任务时。C#作为微软开发平台的主要编程语言,提供了强大的多线程支持。本项目"c#多线程程序设计,IP地址dns域名解析"正是结合了...
侯俊杰翻译的多线程程序设计的书,讲的不错。该电子书为pdf格式,比较清晰。win32多线程程序设计第一部分(一共三部分)
Java 多线程编程是指在一个程序中可以运行多个线程,以提高程序的执行效率和响应速度。在 Java 中,多线程编程可以通过 Thread 类和 Runnable 接口来实现。 为什么需要多线程? 在单线程程序中,如果某个任务需要...
多线程是指在一个应用程序中同时执行多个独立的执行线程,这些线程可以并行处理不同的任务,提高程序的运行效率和响应速度。在Windows操作系统中,多线程编程是实现并发操作的关键技术,尤其在需要进行复杂计算或IO...
在IT领域,多线程是程序设计中的一个重要概念,它允许程序同时执行多个任务,显著提高了计算机系统的效率和响应速度。C++Builder是一款强大的集成开发环境(IDE),它支持C++语言,为开发者提供了创建多线程应用的...