Java基础总结(三)——线程池

线程池:常用的参数,工作流程

线程池的优点:

  • 降低资源消耗:通过重复利用已创建的线程来降低线程创建和销毁时的消耗。
  • 提高响应速度:当任务到达时,任务可以不用等待线程创建就能立即执行。
  • 提高线程的可管理性。使用线程池可以统一分配、调控和监控。

线程的五种状态

  • 创建。当new了一个线程,但还没有start时,线程处于创建状态。
  • 就绪。当调用了start之后,但线程调度程序还没有设置执行当前线程时,线程处于就绪状态。
  • 运行。当线程调度程序执行到当前线程时,当前线程从就绪态转为运行态,开始执行run方法里的代码。
  • 阻塞。线程在运行时被暂停执行(通常在等待某项资源就绪后再执行,wait或sleep会导致线程阻塞),这时线程处于阻塞态。
  • 死亡。线程在运行完run方法里的代码或是调用stop方法后,线程结束运行。

常用的参数

  • int corePoolSize 核心线程数
  • int maximumPoolSize 最大线程数
  • long keepAliveTime 达到最大线程数后,线程池工作线程空闲后,保持存活的时间
  • TimeUnit unit 是keepAliveTime的单位
  • BlockingQueue workQueue 阻塞队列
  • RejectedExecutionHandler handler 饱和策略

Java实现多线程的方式

  • 继承Thread类,重写run方法
  • 实现Runable接口,实现run方法

工作流程

1.当提交了一个任务时,先判断corePoolSize以及当前是否有空闲线程。如果没有空闲线程,则创建新的工作线程,直到线程池的线程数等于corePoolSize。
2.当线程数等于corePoolSize且没有空闲线程时,新进来的任务进入阻塞队列。
3.当阻塞队列满时,那就创建新的工作线程执行任务,直到线程池中的线程数达到maximumPoolSize,这时再有任务来,就由饱和策略来处理新的任务。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值