在我们服务器之前的那部分,我们通过创建线程让线程去处理任务,从而可以在同一时间可以处理多个请求,但是这样则需要我们频繁的创建、销毁线程,这样在一定程度上会产生资源的损耗,影响我们服务器的效率,其次如果短时间内的大量请求,导致服务器创建线程数量过多,可能导致内存达到极限,影响操作系统中其他重要进程的运行
针对我们目前的服务器可以支持常规的短链接web http请求,因为单个任务比较小,为了减小在创建销毁线程这个过程中所带来的资源消耗,我们可以采用线程池相关的技术来代替创建线程处理请求
关于线程池:
-
在面向对象的编程中,创建和销毁对象是很消耗时间和资源的,所以提高服务程序效率的一个手段就是尽可能的减少创建和销毁对象的次数
-
那么如何利用已有资源来服务就是一个需要解决的关键问题,其实这也就是一些“池化技术”产生的原因
-
我们可以通过重复利用已有资源来有效的提高效率,线程池也是在这一思想下的产物
-
我们可以创建一个固定数量线程的一个线程池,它包括固定数量的线程,以及附带一个任务队列用来存放用户需要处理的任务,当用户有新的任务,只需要将任务添加到任务队列中,如果有空闲的线程,那么就去队列中拿取任务执行,如果当前各个线程都处于忙碌状态 ,那么就等待,直至某个线程空闲,就会来任务队列中取任务
-
基于以上思想,我们来写一个线程池,让他可以用来处理我们服务器的请求,提高我们服务器的效率
首先我们先创建一个Task类,用来存放我们需要处理的任务信息
-
针对