多线程(一)

这篇博客介绍了多线程中的核心线程和非核心线程概念,以及它们在系统中的角色。核心线程被视为正式员工,始终存活,而非核心线程则按需创建并有存活时间限制。文章提到了`Concurrent`包下的`excutors`类用于线程池的创建,特别讨论了`newCachedThreadPool`可能导致的线程过多问题,以及`newSingleThreadExecutor`的单线程执行特性。同时,还阐述了提交任务的优先级顺序以及`submit`和`execute`的区别。
摘要由CSDN通过智能技术生成

1、多线程七大参数:

corePoolSize核心线程数(正式员工),
maximumPoolSize(正式员工和可调度的外包员工的总合)
keepAliveTime非核心线程数的存活时间
unit非核心线程数的存活时间单位
workQueue任务队列
threadFactory 线程工厂

RejectedExecutionHandler 拒绝策略

多线程中有两种类型的线程干活,核心线程和非核心线程,核心线程数相当于正式员工,非核心线程相当于外包员工,最大线程数=正式员工和可调度的外包员工的总合,正式员工够用的时候只有他们干活,如果不够用(队列满了)时,会调用外包员工干活(创建非核心线程),如果可调用的外包员工还不够用了,则执行拒绝策略(自己根据业务定义)。正式员工默认一直存活(除非被开除),外包员工按设置的存活时间,干完活到期就自动走人。

2、Concurrent包下提供了excutors类,该类提供多种线程泄创建方法:

1. newCachedThreadPool(ThreadFactory threadFactory) 速度快,不建议使用,因为它的最大线程数是integer.max_value. 即非核心线程数最多可以是integer最大值,可以理解为有任务进来,会一直开启非核心新线程(即有多少任务就开多少线程),线程太多会占用cpu,消耗硬件性能,导致cpu100%,拖慢系统,直接体现就是

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值