线程、线程池总结
来源:互联网 发布:js 按键监听 编辑:程序博客网 时间:2024/05/01 13:43
线程池各参数的含义:
项目中开发通常不会直接使用ThreadPoolExecutor,而是通过Executors.newFixedThreadPool()这种简易写法,创建适合自己项目的线程池。但是了解最基本的线程池ThreadPoolExecutor是十分必要的,尤其是做一些定制方法。比如在执行完一个线程任务后,进行后续操作,此时如果自己实现一个类继承自ThreadPoolExecutor
public class PmCollectDataHandlePool extends ThreadPoolExecutor
并且实现
@Override
protected void afterExecute(Runnable r, Throwable t) 是十分方便的做法
以下参数来自转载
- corePoolSize
核心线程数,核心线程会一直存活,即使没有任务需要处理。当线程数小于核心线程数时,即使现有的线程空闲,线程池也会优先创建新线程来处理任务,而不是直接交给现有的线程处理。
核心线程在allowCoreThreadTimeout被设置为true时会超时退出,默认情况下不会退出。
- maxPoolSize
当线程数大于或等于核心线程,且任务队列已满时,线程池会创建新的线程,直到线程数量达到maxPoolSize。如果线程数已等于maxPoolSize,且任务队列已满,则已超出线程池的处理能力,线程池会拒绝处理任务而抛出异常。
- keepAliveTime
当线程空闲时间达到keepAliveTime,该线程会退出,直到线程数量等于corePoolSize。如果allowCoreThreadTimeout设置为true,则所有线程均会退出直到线程数量为0。
- allowCoreThreadTimeout
是否允许核心线程空闲退出,默认值为false。
- queueCapacity
任务队列容量。从maxPoolSize的描述上可以看出,任务队列的容量会影响到线程的变化,因此任务队列的长度也需要恰当的设置。
线程池按以下行为执行任务
- 当线程数小于核心线程数时,创建线程。
- 当线程数大于等于核心线程数,且任务队列未满时,将任务放入任务队列。
- 当线程数大于等于核心线程数,且任务队列已满
- 若线程数小于最大线程数,创建线程
- 若线程数等于最大线程数,抛出异常,拒绝任务
未完待续。。。
1 0
- 线程、线程池总结
- 【面试】线程/线程池总结
- 线程、多线程、线程池总结
- Java线程池总结
- Java线程池总结
- 线程池总结
- Java线程池总结
- 线程池的总结
- 线程池总结
- Java线程池总结
- 线程池总结
- 线程池的总结
- MySQL线程池总结
- Java线程池总结
- 线程池知识总结
- 线程池相关总结
- Java线程池总结
- 多线程---线程池总结
- LeetCode 208 Implement Trie(实现字典树)
- 属性和普通变量使用增强赋值语句时的差异
- matplotlib的基本用法(四)——设置legend图例
- Dagger 2从浅到深(一)
- Oracle那些进程帮我们做些什么
- 线程、线程池总结
- PonyCar体验感受
- javascript的内置对象string对象总结
- 简单配置spring+springmvc+mybatis之整合
- 第三讲、Linux常用命令
- 游戏内聊天垃圾文本检测
- visio2013中的网格线怎么去除
- 【Linux】线程总结:初识、创建、等待、终止、分离
- 【JDBC详解】基础