美文网首页
Android线程池

Android线程池

作者: JackieZhu | 来源:发表于2022-10-14 22:29 被阅读0次

为什么要引入线程池

  • 降低资源消耗:通过重复利用已创建的线程降低创建和销毁造成的消耗。
  • 提高响应速度:当任务到达时,任务可以不需要等到线程创建就能立即执行。
  • 提高线程的可管理性:线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。

默认线程池

ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 100, 10, TimeUnit.SECONDS, new PriorityBlockingQueue<Runnable>());
for(int index=0; index=100; index++){
    executor.execute(new Runnable());
}
public ThreadPoolExecutor(int corePoolSize,
                              int maximumPoolSize,
                              long keepAliveTime,
                              TimeUnit unit,BlockingQueue<Runnable> workQueue,
                              ThreadFactory threadFactory,       
                            RejectedExecutionHandler handler)
参数 说明
corePoolSize 线程池中核心线程数量
maximumPoolSize 最大能创建的线程数量
keepAliveTime 非核心线程最大存活时间
unit keepAliveTime的时间单位
workQueue 等待队列。当任务提交时,如果线程池中的线程数量大于等于corePoolSize的时候,把该任务放入等待队列
threadFactory 线程创建工厂。默认使用Executors.defaultThreadFactory()来创建线程,线程具有相同的NORM_PRIORITY优先级并且是非守护线程
handler 线程池的饱和拒绝策略。如果阻塞队列满了并且没有空闲的线程,这时如果继续提交任务,就需要采取一种策略处理该任务。

Executors提供的线程池

//单一线程数,同时只有一个线程存活,但线程等待队列无界
 Executors.newSingleThreadExecutor();
//线程可复用线程池,核心线程数为0,最大可创建的线程数为Interger.max,线程复用存活时间是60s.  
 Executors.newCachedThreadPool();
//固定线程数量的线程池
 Executors.newFixedThreadPool(int corePoolSize);
//可执行定时任务,延迟任务的线程池
 Executors.newScheduledThreadPool(int corePoolSize);

关键函数

void execute(Runnable run)//提交任务,交由线程池调度
void shutdown()//关闭线程池,等待任务执行完成
void shutdownNow()//关闭线程池,不等待任务执行完成
int  getTaskCount()//返回线程池找中所有任务的数量
int  getCompletedTaskCount()//返回线程池中已执行完成的任务数量
int  getPoolSize()//返回线程池中已创建线程数量 
int  getActiveCount()//返回当前正在运行的线程数量

状态流转

线程池状态

execute提交任务

execute

相关文章

  • 线程池创建和相关知识

    线程池创建(单例):Android线程池得要这么用 - 简书 线程池相关知识:Android开发之线程池使用总结 ...

  • Android线程池的使用

    一、线程与线程池,为什么要使用线程池 1、Android中的线程 在Android中有主线程和子线程的区分。主线程...

  • 线程池

    话题:线程池Android中的线程池有哪些?它们的区别是什么?为什么要使用线程池? 线程是Android里面一个很...

  • 笔记:Android线程和线程池

    Android线程和线程池 Android中的线程操作相关的类有 AsyncTask IntentService ...

  • 第十九周 线程池

    话题:线程池 Android 中的线程池有哪些?它们的区别是什么?为什么要使用线程池?关键字:线程池、Thread...

  • Android 多线程:线程池理解和使用总结

    一、Android线程池介绍 1.1 原理 Android中的线程池概念来源于Java中的Executor,Exe...

  • Android面试之线程和线程池

    Android中的线程形态 AsyncTask底层用到了线程池。AsyncTask封装了线程池和Handler,它...

  • Android多线程规划

    Android上的线程池使用 Android线程 特性 Each thread costs a minimum o...

  • 19. 线程池

    Android 中的线程池就是 java 中的线程池,即 ThreadPoolExecutor 类。 Java 通...

  • Android的线程和线程池

    Android的线程和线程池 标签(空格分隔): android 一些概念: 线程分类:主线程和子线程,主线程主要...

网友评论

      本文标题:Android线程池

      本文链接:https://www.haomeiwen.com/subject/jgpkzrtx.html