`

自己线程池设计的主要结构

 
阅读更多
老实说,对于线程池我还是属于比较初级的阶段。
下面是我自己设计线程池的思想。

1.有一个线程池mananger.
2.有个工作list.
3.有个等待list.
4.有个实现了Runnable的Task.


一般的逻辑很简单,就是当外面有新的线程进来时候,我们就把先check工作list是否已经满了,
如果没满:
就加进去,然后start。
当线程run方法结束后,我们就把它从工作list的去掉。

如果满了,
就进等待list,不执行start.

然后在外面开个线程,不停的Thread.sleep(1000),去隔一秒的检查工作list是否有空,如果有空位,就把等待list的里的一个线程拿出来,放进工作list.


这个整个线程池的结构就搭好了,这里有个关键,就是我们外面放进去的线程怎么能在自己run方法结束后通知Manager,要把自己从工作list里去掉呢?

这时候,我们可以用外面进来的线程去构造一个Task.
让Task 的run去调用外面进来线程的run,让Task 代替外面进来的线程去start.
结构如:

Task  implements Runnable{
     run(){
      外面新进来的线程.run();
      通知外面进来的线程结束了;
    
      }
}



这样就能通知到了。


这个只是我个人的构想。

我们还可以参数tomcat线程池类作研究。

现在tomcat7的线程池是ThreadPoolExecutor,它继承的就是jdk自带的util里ThreadPoolExecutor。
分享到:
评论

相关推荐

    C++简单线程池设计

    在这个“C++简单线程池设计”的主题中,我们将探讨如何使用GCC编译器以及如何将其改编为Visual Studio(VS)环境,并利用pthread线程库和curl网络库来实现这一功能。 首先,pthread是POSIX标准定义的一个线程接口,...

    Linux环境下通用线程池设计

    ### Linux环境下通用线程池设计的关键知识点 #### 一、设计背景与意义 在Linux环境中,服务器往往需要处理大量的并发请求,并确保应用的稳定性和高效性。为了满足这些需求,通常采用多进程或多线程的技术来提升...

    liunx 通用线程池设计思想

    ### Linux通用线程池设计思想 #### 设计背景与需求分析 随着互联网技术的发展,Linux作为服务器操作系统的基础地位越来越稳固。Linux系统上运行的服务种类繁多,包括但不限于Web服务器、邮件服务器以及各种定制化的...

    C++ 线程池设计

    线程池的数据结构包含了对线程、任务和池状态的管理,如`TpThreadInfo`、`TpWorkDesc`和`TpThreadPool`结构体。 线程池的使用能显著减少线程的创建和销毁开销,尤其在需要大量并发处理任务的场景下,例如压力测试、...

    线程池设计

    线程池设计是一种高效利用系统资源,优化多线程应用执行效率的方法。在现代操作系统中,创建和销毁线程都伴随着一定的开销,包括内存分配、上下文切换等。线程池通过预先创建并维护一组可重用线程,来减少这种开销,...

    仿ACE线程池机制实现的线程池类

    线程池的设计通常会考虑线程安全,避免在多线程环境下出现竞态条件和死锁。 在"threadpool"和"common"这两个文件夹中,可能包含了实现这些类的源代码文件,以及可能用于支持线程池运行的通用工具类或辅助函数。...

    _基于线程池的高性能服务器软件的设计和实现

    2. **线程管理**:为了有效管理线程池中的线程,需要设计合理的数据结构来存储和管理空闲与活跃状态的线程。此外,还需要考虑线程同步机制,确保线程间的正确调度和资源访问。 3. **性能优化**:除了采用线程池技术...

    C++线程池,带PPT 线程池

    总之,C++线程池是多线程编程中的一个重要工具,理解和掌握其设计与实现原理对于提升C++并发编程能力至关重要。通过分析提供的PPT,开发者可以更深入地了解线程池的工作机制,以及如何在实际项目中应用和优化线程池...

    IocpUdp类,完整的线程池,简单的结构,便于扩展

    2. **结构精巧**:IocpUdp的代码结构设计得简洁明了,方便阅读和理解。每个函数和数据结构都有清晰的注释,这使得学习和调试变得容易。良好的代码组织也有利于后续的维护和扩展。 3. **易于扩展**:由于IocpUdp的...

    linux线程池示例程序

    以下是一个简单的线程池设计步骤: 1. **初始化线程池**:创建一定数量的工作线程,并初始化任务队列。 2. **创建任务**:定义任务结构体,包含任务的函数指针和参数。 3. **提交任务**:将任务添加到任务队列,...

    C++高性能线程池代码

    同时,良好的线程池设计还能避免过多线程导致的上下文切换,进一步提升性能。 总的来说,"C++高性能线程池代码"是一个实现高效并发处理的工具,通过合理利用系统资源,为服务器编程提供了强大的性能支持。理解并...

    线程池原理及创建(C++实现)

    线程池的主要优点在于可以显著减少线程创建和销毁的开销,并且能够更好地控制并发线程的数量,从而避免因线程过多而引起的资源过度消耗。 #### 四、线程池的关键组件 线程池的设计涉及到多个关键组件,下面详细...

    一个完整的线程池的实例

    线程池是一种基于池化思想的设计模式,用于管理和复用一组预先创建好的线程。通过线程池可以有效地控制运行中的线程数量,并重用空闲线程处理新任务,从而减少了创建和销毁线程带来的开销。线程池通常包括以下几个...

    linux线程池代码(c++实现)

    在Linux系统中,线程池是一种高效的多线程管理机制,它通过预先创建一组线程,然后将任务分配给这些线程执行,从而避免频繁地创建和销毁线程...通过合理的线程池设计,可以提高程序的并发性能,减少系统资源的浪费。

    一个Ubuntu下的C线程池

    标题中的“一个Ubuntu下的C线程池”指的是在Ubuntu操作系统上使用C语言实现的一个线程池库。...通过研究这个项目,我们可以学习到多线程编程、线程池设计、以及在C语言中使用pthread库的相关知识。

    c++ 线程池实现及安全队列

    因此,开发者通常需要自己实现线程池来优化程序性能。本篇文章将深入探讨C++线程池的实现,以及如何结合安全队列来确保并发处理的安全性。 线程池的概念源自于操作系统中的一种资源管理策略,它预先创建一组线程,...

    c++线程池的实现代码

    6. **线程池的扩展性**:一个好的线程池设计应该能够适应任务量的变化,如增加或减少线程数量。动态调整线程池大小可以优化系统资源利用,特别是在负载变化较大的情况下。 7. **错误处理**:线程池需要有错误处理...

    Linux下通用线程池的构建

    【通用线程池】是一种可复用的线程池设计,它可以适应各种任务,而不仅仅局限于特定的场景。通用线程池的特点在于它的动态伸缩性,可以根据任务负载自动调整线程数量。这样的设计使得线程池更加灵活,能够更好地适应...

Global site tag (gtag.js) - Google Analytics