首页 > 编程知识 正文

springboot创建线程池,线程池参数设置原则

时间:2023-05-05 18:44:23 阅读:144338 作者:1013

参考: Android开发——Android中常见的四种线程池(保证可以阅读和理解) _Calvin-CSDN博客_android线程池开发线程池的好处是什么? 1 .通过减少系统资源消耗和重用现有线程,减少创建和销毁线程所带来的消耗。

2 .提高系统响应速度,在任务到达时通过复用现有线程,可以立即执行,而无需等待新线程的创建。

3 .方便线程并发行数的管理。 因为如果线程无限制地创建,则可能会过度消耗内存而导致OOM,从而导致cpu过度切换。 (cpu切换线程需要时间和成本)必须维护当前线程运行的现场,并恢复线程运行的现场。

4 .提供更强大的功能,延迟定时线程池。

线程池的主要参数? publicthreadpoolexecutor (intcorepoolsize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,blockingqueruannablework ththon rejectedexecutionhandlerhandler (if (corepoolsize0||maximumpoolsize=0| ) (work queue==null|) this.ACC=system.getsecuritymanager ()==null? null :访问控制器. get context (; this.corePoolSize=corePoolSize; this.maximumpoolsize=maximumpoolsize; this.workQueue=workQueue; this.keepalive time=unit.to nanos (keepalive time ); this.threadfactory=threadfactory; this.handler=handler; }构造函数的参数含义如下:

corePoolSize:指定了线程池中的线程数量,它的数量决定了添加的任务是开辟新的线程去执行,还是放到workQueue任务队列中去。当向线程池提交一个任务时,若线程池创建的线程数小于corePoolSize,即便此时存在空闲线程,也会通过创建一个新线程来执行该任务,直到已创建的线程数大于或等于corePoolSize时,(除了利用新任务来提交和启动线程(按需构造),也可以通过prestartCoreThread()和prestartAllTreads()方法来提前启动线程池中的基本线程。)

maximumPoolSize:指定了线程池中的最大线程数,这个参数会根据你使用的workQueue任务队列的类型,决定线程池会开辟的最大线程数量。(当队列满了,且已创建的线程数小于maximumPoolSize,则线程池会创建新的线程来执行任务。另外,对于无界队列,可忽略该参数。)

线程池流程图为什么线程池使用块队列? 在线程池Java提供的线程池excute和submit方法springboot中,设置如何通过配置文件和注释创建线程池

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。