线程池---骚操作

Posted xm08030623

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程池---骚操作相关的知识,希望对你有一定的参考价值。

线程池

效果对比

  • 普通线程的启动方式
  • 利用线程池启动线程的方式

线程池简介

  • 降低资源消耗:不用频繁创建销毁资源。
  • 提高响应速度
  • 提高线程可管理性

简单线程池的设计

设计思路

设计过程中需要思考的问题

  1. 初始创建线程数
  2. 没有可用线程的解决策略
  3. 缓冲数组长度
  4. 缓冲数组满了怎么办?

线程池的核心参数

  • corePoolSize
  • maxiumPoolSize
  • keepAliveTime
  • unit
  • workQueue
  • threadFactory
  • handle

线程池的处理流程

阻塞队列

  • 无界队列(链表)
  • 有界的队列(链表、数组)
  • 同步移交队列

线程池可选择的饱和策略

  • AbortPolicy终止策略(默认):抛异常,拒绝新任务
  • DiscardPolicy抛弃策略:抛弃新任务
  • DiscardOldestPolicy抛弃旧任务的策略:扔掉最旧的任务,添加新的任务
  • CallerRunsPolicy调用者运行的策略:提交任务的一方执行操作

线程池执行的示意图

常用线程池

Executors.newSingleThreadExecutor() //单一线程线程池
Executors.newCachedThreadPool() //线程数量无限线程池
Executors.newFixedThreadPool( 10 ) //线程数量固定的线程池

向线程池提交任务的两种方式

  • submit()
  • execute() 无法将值返回给主线程

线程池的状态

  • RUNNING
  • SHUTDOWN
  • STOP
  • TIDYING
  • TERMINATED

以上是关于线程池---骚操作的主要内容,如果未能解决你的问题,请参考以下文章

newCacheThreadPool()newFixedThreadPool()newScheduledThreadPool()newSingleThreadExecutor()自定义线程池(代码片段

Java 线程池最佳实践

线程池与并行度

Python 必知的 20 个骚操作!

Java——线程池

Motan在服务provider端用于处理request的线程池