美文网首页
线程池ThreadPoolExecutor详解

线程池ThreadPoolExecutor详解

作者: 让你变好的过程从来都不会很舒服 | 来源:发表于2023-01-14 21:56 被阅读0次

ThreadPoolExecutor
1.什么是线程池?
(首先要理解什么是线程)
线程池,thread pool,是一种线程使用模式,线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。

  • 通俗来说,就是可管理和维护以及分配线程的“池子”。

2.为什么使用线程池?
为了减少创建和销毁线程的次数,让每个线程都可以多次的使用,可以根据系统情况调整线程的数量,防止消耗过多内存。在实际使用中,服务器在创建和销毁线程上花费的时间和消耗的系统资源都相当大,使用线程池就可以优化。
线程池主要用来解决线程生命周期开销问题和资源不足问题。通过对多个任务重复使用线程,线程创建的开销就被分摊到了多个任务上了,而且由于在请求到达时线程已经存在,所以消除了线程创建所带来的延迟。这样,就可以立即为请求服务,使用应用程序响应更快。另外,通过适当的调整线程中的线程数目可以防止出现资源不足的情况。

通俗来说,就是为了优化线程的内存开销。
3.线程池的核心参数

public ThreadPoolExecutor(int corePoolSize,//核心线程数
                          int maximumPoolSize,//最大线程数
                          long keepAliveTime,//线程空闲时间
                          TimeUnit unit,//时间单位
                          BlockingQueue<Runnable> workQueue,//任务队列
                          ThreadFactory threadFactory,//线程工厂
                          RejectedExecutionHandler handler//拒绝策略) 
{
    ...
}

4.线程池的执行顺序
线程池按以下行为执行任务

当线程数小于核心线程数时,创建线程。
当线程数大于等于核心线程数,且任务队列未满时,将任务放入任务队列。
当线程数大于等于核心线程数,且任务队列已满,若线程数小于最大线程数,创建线程。
若线程数等于最大线程数,则执行拒绝策略

相关文章

网友评论

      本文标题:线程池ThreadPoolExecutor详解

      本文链接:https://www.haomeiwen.com/subject/rgjmcdtx.html