必须了解的线程池基本参数类型

  • 用户线程ULT:不需要用户态/核心态切换,速度快;线程阻塞则进程阻塞
  • 内核线程KLT:线程的创建、调度、管理由内核完成,速度慢;线程阻塞不会引起进程阻塞

线程的创建

jvm通过本地方法栈的p_thread接口到内核中创建线程,内核中有线程表存储线程信息

线程的执行

java程序创建线程后,通过库调度器(操作系统)到内核空间创建线程,并维护到线程表中。此时CPU会根据调度的算法给每个线程分配不同的执行时间(时间片),当时间片结束后,CPU还没执行完,会再分配一定的时间片。

 

 

 

 

为什么使用线程池?

线程的创建和销毁是很消耗资源的操作,java线程依赖于内核线程,创建线程需要操作系统状态的切换,为避免资源过度消费需要重用线程执行多个任务

线程池优势:

  • 重用存在的线程,较少开销,提升性能;
  • 提高线程的可管理性,统一分配、调优、监控。

基础线程池的参数:

  1. 最大线程数
  2. 核心线程数
  3. 过期时间
  4. 过期时间单位
  5. 阻塞队列 :有界/无界 FIFO
  6. 线程工厂
  7. 拒绝策略:
  • AbortPolicy 丢掉任务并抛异常
  • ·CallerRunsPolicy 调用当前线程执行此无法提交的任务(也就是不使用线程池中的已有线程了)
  • DiscardOldestPolicy 丢掉队列最先添加的任务,将其放到队列的最后面
  • DiscardPolicy 丢掉任务但不抛异常

线程池执行模型

 

线程池的五种线程状态

  • running 能接受新任务以及处理添加的新任务
  • shutdown 不接受新任务,但是可以处理已经添加的任务
  • stop 不接受新任务,并且中断正在执行的任务
  • tidying 所有任务已经终止,并清理部分队列参数
  • terminated 所有线程终止

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值