欢迎使用CSDN-markdown编辑器
来源:互联网 发布:泰瑞克埃文斯 数据 编辑:程序博客网 时间:2024/06/07 19:45
Java线程池
为了更好的利用压榨多核CPU的计算能力,使用多线程技术能够很好的提高CPU的利用率,但是线程的创建和销毁都需要耗费较大的系统资源。所以线程复用是十分必要的。Java并发编程包中有提供一组Executor框架
核心类和接口:
- Executor
- ExcutorService
- AbstractExcutorService
- ThreadPoolExcutor
- Excutors
- ScheduleExecutorService
ThreadPoolExecutor详解
ThreadPoolExcutor是创建线程池的核心类,其构造方法核心参数
- coreSize:核心线程数,初始化线程池时创建。
- maxSize:最大线程数
- keepAliveTime:允许最大线程空闲保留时间,仅仅当coreSize
阻塞队列常用的有以下几种
直接提交队列 SysnchronousQueue:是一个特殊的阻塞队列,没有容量,每次删除操作都需要等待对应的插入操作,通常使用这个队列都要设置很大的maxSize,否则很容易就会执行拒绝策略
有界任务队列ArrayQueueQueue:除非线程池十分繁忙,否则均能确保核心线程数量维持在coreSize
无界队列LinkBlockQueue:无界队列没有容量限制,则除非资源耗尽的情况,否则不存在执行拒绝策略的时候。假如目前线程池已经达到coreSize,线程数就不会继续增加了,后来的任务无休止的进入队列,而又没有空闲的线程资源,则任务在队列中进行等待,如果线程创建速度和处理速度差距十分大,很容易造成资源耗尽。
优先任务队列PriorityBlockingQueue,可以根据任务自身的优先级顺序先后执行,确保系统性能的同时也有很好的质量保障
JDK内置拒绝策略
AbortPolicy:直接抛出异常,阻止系统正常执行。
CallerRunsPolicy:只要线程池没有关闭,该策略直接在调用者线程中,运行当前被丢弃任务,显然这样做不会真的丢弃任务,但是,任务提交线程的性能极有可能急剧下降
DiscardOledestPolicy:该策略将丢弃最老的一个请求,也是即将被执行的一个任务,并尝试从新提交当前任务
DiscardPolicy:默默丢弃没法处理的任务,不给于任何处理
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 通俗理解九大排序算法
- sort-colors
- javaweb+SSH实现简单的权限管理系统
- MQTT--测试
- MQTT--Python进行发布、订阅测试
- 欢迎使用CSDN-markdown编辑器
- How package finding works
- 爬格子呀6-1、6-2、6-3
- 【线段树】区间求和+区间修改(区间加)
- Android Study Material Design 五 番外篇 之:深入分析SnackBar源码
- 智能指针好用
- MySql从一窍不通到入门(九)Sharding的实现和规避
- Webpack
- easyUI下拉框控件easyui-combobox使用后台json文件填充数据失败的问题