JAVA 线程池 (一)理解概念和作用

什么是线程池、有什么用处

系统需要处理非常多的请求、每个请求都需要开一个线程来操作、这时候系统需要无限制的去创建和销毁、因为线程无法复用、线程的数量也是无限的大。

(创建线程和关闭线程上有一定的耗时和耗能,系统性能下降)

线程池的作用

管理线程:复用线程、控制线程数量  

(当然线程池也可以是无限的创建线程、主要的目的是复用线程、减少系统对线程创建和销毁的开销)

举个例子

当每秒有10个请求进来、需要处理不同的业务、这是就需要开启10个线程。

假设:这10个线程处理的任务为5秒(如果处理任务时间太长,一定要设置核心线程数和最大线程数、避免线程的复用率低、内存被占满)

没有线程池时

第1秒创建10个线程 、 到第5秒时创建了50个线程

到第6秒时、会继续创建线程就是60个线程。这时第1秒创建的线程已经执行完毕、等待GC回收

这边就有性能问题、系统需要无限制的回收销毁已经创建的线程:系统性能下降

有线程池时

第一秒创建10个线程 、 到第5秒时创建了50个线程

到第6秒时、并不会创建线程、因为第1秒创建的线程已经执行完毕、在等待回收销毁、但还没有被销毁、这是就会利用已有的未销毁空闲线程来执行新的任务

这边系统就不需要无限制的回收和销毁已经创建的线程:系统性能提高(会持续的复用先前创建的50个线程)

当然线程池可以设置最大线程数和核心线程、可以控制线程数量、这个后面会讲使用、这里只是讲解线程池的作用和好处



纯属个人理解   

不理解或者是有什么错误的地方、欢迎留言并会及时回复和改正的

你可能感兴趣的:(JAVA 线程池 (一)理解概念和作用)