关于Android线程池

  • 前言
    一般而言,我们在android程序代码中不要显式的创建线程,而是要采取线程池(也就是ThreadPoolExecutor类)的方式创建。

  • 关于线程池的几个类
    直接上图


    图片.png

    ThreadPoolExecutor的构造方法如下:


    图片.png

    1,corePoolSize:核心线程数
    线程池新建线程的时候,如果当前线程总数小于 corePoolSize ,则新建的是核心线程;如果超过corePoolSize,则新建的是非核心线程。
    2,maximumPoolSize:线程总数= 核心线程数 + 非核心线程数

    3,keepAliveTime:超时时长
    非核心线程如果长时间闲置,超过这个时长便被回收
    4,unit
    设置keepAliveTime的单位,MILLISECONDS : 毫秒 、SECONDS : 秒、MINUTES : 分、HOURS : 小时、DAYS : 天
    5,workQueue:缓冲任务队列
    线程池的execute方法会将Runnable对象存储起来,当所有的核心线程都有活干,新添加的任务会被添加到这个队列中等待处理,如果队列满了,则新建非核心线程执行任务。
    6,threadFactory:线程工厂接口
    只有一个new Thread(Runnable r)方法,可以认为是线程池创建新线程 。
    7,handler:
    这个主要是用来抛异常的,如果线程无法执行新任务一般会抛一个RejectedExecutionException异常。
    另外,为了使用方便,java提供了四种线程池:

    • newFixedThreadPool :定长线程池
    • newCacheThreadPool:缓存线程池
    • newScheduledThreadPool:定长任务线程池
    • newSingleThreadExecutor :创建一个单线程的线程池
  • 简单实例


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

推荐阅读更多精彩内容

  • 第一部分 来看一下线程池的框架图,如下: 1、Executor任务提交接口与Executors工具类 Execut...
    压抑的内心阅读 4,291评论 1 24
  • 为什么使用线程池 当我们在使用线程时,如果每次需要一个线程时都去创建一个线程,这样实现起来很简单,但是会有一个问题...
    闽越布衣阅读 4,319评论 10 45
  • 【JAVA 线程】 线程 进程:是一个正在执行中的程序。每一个进程执行都有一个执行顺序。该顺序是一个执行路径,或者...
    Rtia阅读 2,783评论 2 20
  • 本文是我自己在秋招复习时的读书笔记,整理的知识点,也是为了防止忘记,尊重劳动成果,转载注明出处哦!如果你也喜欢,那...
    波波波先森阅读 11,324评论 4 56
  • 世界会向那些有目标和远见的人让路!2018,祝好! 1 想要体面生活,又觉得打拼辛苦;想要健康身体,又无法坚持运动...
    未来的啄木鸟阅读 192评论 0 0