前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Android之Executor线程池介绍

Android之Executor线程池介绍

作者头像
李小白是一只喵
发布2021-01-21 06:19:15
发布2021-01-21 06:19:15
45000
代码可运行
举报
文章被收录于专栏:算法微时光
运行总次数:0
代码可运行

Executor

Executor是Java中的概念,是一个接口,真正的线程池实现是ThreadPoolExecutor。

它提供了一系列的参数来配置不同的线程池。

ThreadPoolExecutor

ThreadPoolExecutor是线程池的真正实现,他的构造方法提供了一系列参数来配置线程池,

代码语言:javascript
代码运行次数:0
复制
public ThreadPoolExecutor(
            int corePoolSize,//核心线程数
            int maximumPoolSize,//最大线程数
            long keepAliveTime, //非核心线程的超时时间
            TimeUnit unit,//单位
            BlockingQueue<Runnable> workQueue,//任务队列 
            ThreadFactory threadFactory//线程工厂
            )

除了这些参数外还有个很不常用的参数RejectedExecutionHandler handler。

当线程池无法执行新任务时(任务队列满了或者无法成功执行)会调用handler的rejectExecutionException。

线程池的类别

在Executors里面对应的线程池有一下几种实现:

cached ThreadPool

缓存线程池的特点是它会缓存之前的线程,新提交的任务可以运行在缓存的线程中,即实现了前文所述的第一个优势。

fixed ThreadPool

cachedThreadPool的一个特点是——新提交的任务没有空闲线程可以执行了,就会创建一个新的线程。而fixedThreadPool不会这样,它会将任务保存起来,等到有空闲线程再执行。即实现了前文所述的第二个优势。

scheduled ThreadPool

scheduled ThreadPool的特点是可以实现任务的调度,比如任务的延迟执行和周期执行。

代码实例
代码语言:javascript
代码运行次数:0
复制
ThreadPoolExecutor executor1 = (ThreadPoolExecutor)Executors.newCachedThreadPool();
ThreadPoolExecutor executor2 = (ThreadPoolExecutor)Executors.newFixedThreadPool(4);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Executor
  • ThreadPoolExecutor
  • 线程池的类别
    • 代码实例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档