线程池理解

我的Github地址

有问题直接留言或 联系QQ:1079569023


Thread线程

  1. Linux:一个进程:1000个Thread限制
  2. Windows:20000个Thread

ThradPoolExecutor

  1. corePoolSize:核心线程数,缓存的线程数量
  2. maximumPoolSize: 10
BlockingQueue到达最大容量后,可以添加的任务数量 

10:用来在增加5个线程来执行任务,最多存在10个线程
  1. keepAliveTime:
任务数量减少后,只会杀掉maximumPoolSize定义多出来的几个线程,不会杀掉核心线程数
  1. BlockingQueue:到达核心线程数后,任务存放点
阻塞队列:先进先出,队列满的时候,放任务的线程会被阻塞

1.add,remove->add满的时候,直接抛异常
2.offer,pull->add满的时候,不抛异常
3.put,take ->会阻塞调用线程,主要是用这个

Android常用2个阻塞对列
LinkedBlockingQueue/ArrayBlockingQueue
  1. RejectedExecutionHandler:任务超出BlockingQueue+maximumPoolSize 后,执行的拒绝策略
1.抛弃最早的任务
2.直接抛出异常(AbortPolicy默认参数)
3.原线程执行
4.直接抛弃

6.合理配置线程池

1.CPU密集型:线程池个数不要超过系统CPU核心数
Runtime.getRuntime.availableProessors

2.IO密集型:无法确定IO操作数量
缺省默认是:2*CPU个数

3.参考Android中的AsyncTask
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 作为一个程序员,平时关于线程也是使用的肯定很频繁,举个例子开启无数线程跑的同时就好像一个没有红绿灯的十字路口无数的...
    Mr_Ashin阅读 990评论 0 0
  • 前言 线程池是维护了一批线程来处理用户提交的任务,达到线程复用的目的,合理使用线程有3个好处。 降低资源消耗。通过...
    afree_阅读 567评论 0 6
  • 一、Android线程池介绍 1.1 原理 Android中的线程池概念来源于Java中的Executor,Exe...
    Marker_Sky阅读 6,338评论 0 16
  • 作为四大名著之一,《三国演义》实至名归!再说到历史价值,其真相度也能达到七八成。那几成哪里去了?少部分给了小说的夸...
    乇三千阅读 1,206评论 0 1
  • 写在最前:这是我半年多下来工作的一些思考,笑看就好,不必当真。 1、无论你接触到了什么需求,都需要放在场景下进行验...
    煎鱼说阅读 174评论 0 0