关于Android线程池

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

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


    关于Android线程池_第1张图片
    图片.png

    ThreadPoolExecutor的构造方法如下:


    关于Android线程池_第2张图片
    图片.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 :创建一个单线程的线程池
  • 简单实例


    关于Android线程池_第3张图片
    图片.png

你可能感兴趣的:(关于Android线程池)