当前位置:   article > 正文

简述 ThreadPoolExecutor 处理流程_threadpoolexecutor执行完后再处理别的方法

threadpoolexecutor执行完后再处理别的方法

ThreadPoolExecutor继承自抽象类AbstractExecutorService,该抽象类实现了ExecutorService接口。ThreadPoolExecutor也是我们运用最多的线程池

这里写图片描述

public ThreadPoolExecutor(int corePoolSize,  
                              int maximumPoolSize,  
                              long keepAliveTime,  
                              TimeUnit unit,  
                              BlockingQueue<Runnable> workQueue,  
                              ThreadFactory threadFactory,  
                              RejectedExecutionHandler handler) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 参数说明:

corePoolSize:线程池中所保存的核心线程数。线程池启动后默认是空的,只有任务来临时才会创建线程以处理请求。
maximumPoolSize:线程池允许创建的最大线程数。它与corePoolSize的作用是调整“线程池中实际运行的线程的数量”。当新任务提交给线程池时,如果线程池中运行的线程数量小于corePoolSize,则创建新线程来执行任务;如果此时,线程池中运行的线程数量大于corePoolSize,但小于maximumPoolSize,则仅当阻塞队列满时才创建新线程。如果corePoolSize与maximumPoolSize相同,则创建固定大小的线程池。如果将maximumPoolSize设置为基本的无界值(如Integer.MAX_VALUE),则允许线程池适应任意数量的并发任务。keepAliveTime:当前线程池线程总数达到核心线程数时,终止多余的空闲线程的时间。
Unit:keepAliveTime参数的时间单位,可选值有毫秒、秒、分等。
workQueue:任务队列。如果当前线程池达到核心线程数量corePoolSize后,且当前所有线程都处于活动状态时,则将新加入的任务放到此队列中。
任务队列
1、ArrayBlockingQueue:基于数组的有界阻塞队列;
2、LinkedBlockingQueue:基于链表的无界阻塞队列;
3、SynchroniousQueue:不存储元素的阻塞队列;
4、PriorityBlockingQueue:具有优先级的无对阻塞队列。
threadFactory:线程工厂,让用户可以定制线程的创建过程,一般不需要设置。
Handler:拒绝策略,当线程池和任务队列workQueue都满了的情况下,对新加的任务采取的处理策略。
饱和策略:
1、new ThreadPoolExecutor.DiscardPolicy();
2、new ThreadPoolExecutor.AbortPolicy();
3、new ThreadPoolExecutor.CallRunsPolicy();
4、new ThreadPoolExecutor.DiscardOldestPolicy();
5、自定义策略。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/1008779
推荐阅读
相关标签
  

闽ICP备14008679号