什么是线程池、有什么用处
系统需要处理非常多的请求、每个请求都需要开一个线程来操作、这时候系统需要无限制的去创建和销毁、因为线程无法复用、线程的数量也是无限的大。
(创建线程和关闭线程上有一定的耗时和耗能,系统性能下降)
线程池的作用
管理线程:复用线程、控制线程数量
(当然线程池也可以是无限的创建线程、主要的目的是复用线程、减少系统对线程创建和销毁的开销)
举个例子
当每秒有10个请求进来、需要处理不同的业务、这是就需要开启10个线程。
假设:这10个线程处理的任务为5秒(如果处理任务时间太长,一定要设置核心线程数和最大线程数、避免线程的复用率低、内存被占满)
没有线程池时
第1秒创建10个线程 、 到第5秒时创建了50个线程
到第6秒时、会继续创建线程就是60个线程。这时第1秒创建的线程已经执行完毕、等待GC回收
这边就有性能问题、系统需要无限制的回收销毁已经创建的线程:系统性能下降
有线程池时
第一秒创建10个线程 、 到第5秒时创建了50个线程
到第6秒时、并不会创建线程、因为第1秒创建的线程已经执行完毕、在等待回收销毁、但还没有被销毁、这是就会利用已有的未销毁空闲线程来执行新的任务
这边系统就不需要无限制的回收和销毁已经创建的线程:系统性能提高(会持续的复用先前创建的50个线程)
当然线程池可以设置最大线程数和核心线程、可以控制线程数量、这个后面会讲使用、这里只是讲解线程池的作用和好处
纯属个人理解
不理解或者是有什么错误的地方、欢迎留言并会及时回复和改正的
网友评论