可以做硬件外包项目的网站,支付宝网站开发文档,微信公众号?,wordpress自动发卡线程池
线程池#xff08;英语#xff1a;thread pool#xff09;#xff1a;一种线程使用模式。线程过多会带来调度开销#xff0c;进而影响缓存局部性和整体性能。而线程池维护着多个线程#xff0c;等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时…线程池
线程池英语thread pool一种线程使用模式。线程过多会带来调度开销进而影响缓存局部性和整体性能。而线程池维护着多个线程等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。 例如线程数一般取cpu数量2比较合适线程数过多会导致额外的线程切换开销。
线程池应用场景
当应用场景为计算密集型时为了将每个cpu充分利用起来线程数量正常是cpu核数1还可以看jdk的使用版本1.8版本中可以使用cpu核数*2。2021年1月18日15:36:54
当应用场景为io密集型时做web端开发的时候涉及到大量的网络传输不进入持缓存和与数据库交互也会存在大量io当发生io时候线程就会停止等待io结束数据准备好线程才会继续执行所以当io密集时可以多创建点线程让线程等待时候其他线程执行更高效的利用cpu效率
作用
普通线程需要频繁的创建执行销毁三步线程池的作用能大大减少创建和销毁使线程在执行的时候不调用创建和销毁提高线程执行效率合理的设置线程数复用线程避免频繁回收和创建提高系统运行速率和吞吐量。
参数
线程池七大参数分别是corePoolSize、maximumPoolSize、keepAliveTime、unit、workQueue、threadFactory、handler
(1)corePoolSize线程池中常驻核心线程数
(2)maximumPoolSize线程池能够容纳同时执行的最大线程数
(3)keepAliveTime多余的空闲线程存活时间
(4)unitkeepAliveTime的时间单位
(5)workQueue任务队列被提交但尚未执行的任务
(6)threadFactory表示生成线程池中的工作线程的线程工厂
(7)handler拒绝策略表示当队列满了并且工作线程大于等于线程池的最大线程数(maximumPoolSize)时如何拒绝。