专业的JAVA编程教程与资源

网站首页 > java教程 正文

编写自己的线程池

temp10 2024-11-23 22:33:51 java教程 13 ℃ 0 评论

线程池(thread pool)是一种多线程处理方式。简单来说,就是在一个线程池对象中预先创建一些线程,当有任务需要执行的时候,就选择其中一个线程来执行任务,任务执行完毕,线程并不销毁,而是放回池中。当没有任务执行时,线程池中保留少量的线程,让他们处于等待状态,这样不占用CPU的时间。如果同时执行的任务数较多,线程池中的线程不够用了,就创建多个新的线程来执行任务,执行完毕,根据线程池预先设定好的最大空闲线程数,清理多余的线程。

使用线程池技术避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。

编写自己的线程池

线程池作为提高程序处理数据能力的一种方案,应用非常广泛,大量的服务器或多或少地使用了线程池技术,不管是用Java还是C++实现。

线程池一般有三个重要参数:

1. 最大线程数。在程序运行的任何时候,线程总数都不会超过这个数。如果请求任务数量超过最大线程数时,则会等待其他线程结束后再处理。

2. 最大共享线程数,即最大空闲线程数。如果当前的空闲线程数超过该值,则多余的线程会被杀掉。

3. 最小共享线程数,即最小空闲线程数。如果当前的空闲线程数小于该值,则一次性创建这个数量的空闲线程,所以它本身也是一个创建线程的步长。

线程池有两个概念:

1. Worker线程。工作线程主要是执行任务,有两种状态:空闲状态和运行状态。在空闲状态时挂起,等待任务;处于运行状态时,表示正在执行任务(Runnable)。

2. 辅助线程。主要负责监控线程池的状态:空闲线程是否超过了最大空闲线程数,或者小于最小空闲线程数等。如果不满足要求,就进行调整。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表