栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

使用线程池

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用线程池

线程池的构造方法:

public ThreadPollExecutor(int corePoolSize//核心线程数量

                                              int maximumPoolSize//最大线程数量

                                              long keepAliveTime//最大空闲时间

                                                TimeUnit unit//时间单位

                                                BlockingQueue workQueue//任务队列

                                                ThreadFactory threadFactory//线程工厂

                                                RejectedExecutionHandler handler//饱和处理机制)

scheduled :安排;为…安排时间;预定;

 newCachedThreadPool:没有核心线程,队列为同步队列:只有一个队列,如果没用使用此队列,不会产生新的队列,有几个Task,就有几个线程,线程数量过多,只会导致内存占用100%,不会导致内存溢出 

newFixedThreadPool:最大线程数量与核心线程数量相同:队列为无界队列

newsigleThreadPool:最大线程数量等于核心线程数量等于1:队列为无界队列

为什么要使用线程池

、减少开销提升效率
        减少线程的创建和销毁所花的时间以及系统资源的开销;

        同时,提高系统响应速度,当有新任务到达时,通过复用已存在的线程,无需等待新线程的创建便可立即执行。

2、提高线程的可管理性
        方便管控线程并发数量。线程无限制的创建,可能会导致内存占用过多,从而产生OOM,并且会造成CPU过度切换,CPU切换线程是有时间成本的:需要保持当前执行线程的现场,并恢复要执行线程的现场。

        对线程进行统一的分配、调优和监控,从而也提高响应速度;提供更强大的功能,延时定时线程池。
 

为什么不推荐使用java自带的线程池工具类?

OOM(内存溢出):只有newCachedThreadPool 不会出现OOM:问题出现在了队列上,队列的本质是数据结构,数据结构的本质是用来存储的  

提交优先级:核心线程---队列--非核心线程

执行优先级:核心线程--非核心线程---队列

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/315260.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号