码迷,mamicode.com
首页 > 编程语言 > 详细

线程池---骚操作

时间:2019-12-11 17:18:39      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:keepalive   keepaliv   stop   创建线程   discard   没有   响应   问题   --   

线程池

效果对比

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

线程池简介

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

简单线程池的设计

设计思路

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

  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

线程池---骚操作

标签:keepalive   keepaliv   stop   创建线程   discard   没有   响应   问题   --   

原文地址:https://www.cnblogs.com/xm08030623/p/12023535.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!