为了账号安全,请及时绑定邮箱和手机立即绑定

线程池ThreadPoorExector

标签:
Android

!通过阅读Android开发艺术探索整理

常用构造方法:

[代码]java代码:

?

1public ThreadPoorExecutor(int corePoorSize,int maximumPoorSize,long keepAliveTime,TimeUnit unit,BlockingQuene <runnable> workQuene,ThreadFactory threadFactory)</runnable>


corePoorSize:核心线程数,即使闲置也会一直存活。配合allowCoreTreadTimeOut与keepAliveTime可指定闲置时的超时时长

maximumPoorSize:线程池所能容纳的最大线程数量,超过后,后续任务将阻塞

keepAliveTime:非核心线程的闲置超时时长

unit:超时时间单位,枚举类型

workQuene:任务队列,存储通过excutor提交的Runnable对象

threadFactory:接口,new Thread(Runnable) 提供创建新线程的功能

RejectedExecutionHandler:不常用,当线程无法执行新任务时会调用handler.rejectedExecution通知调用者

执行任务时的规则:

线程数量未达到核心线程数,直接启动一个核心线程

线程数量已经或超过核心线程数量,任务会插入到任务队列中等待

由于任务队列已满,无法将任务插入到任务队列,如果线程数量未达到线程池最大值,启动非核心线程执行任务

线程数量已达到最大值,拒绝执行任务

常见四大分类:

Cached:只有非核心线程,线程数最大为Integer.MAX_VALUE。闲置线程超时时间为60s。所有线程都活动时会创建新线程,否则使用闲置的,适合大量且耗时较少任务

Fixed :任务队列没有限制,没有超时机制,空闲时不会被回收,除非线程池被关闭。所有线程都活动时新任务会等待,只有核心线程,线程数量固定

Scheduled:核心线程数固定,线程数量不固定,非核心线程闲置时立即回收。适合周期、定时任务。

SingleThread:只有一个核心线程,所有任务在同一线程中按顺序执行。统一所有外界任务到同一个线程

任务提交方法:execute(Runnable)

引申一个面试题:主线程开启一个线程池,只有一个核心线程,多次循环、只创建一个Runnable,Runnable是否会多次执行?

以下内容来源于高手解答:

答案是会多次执行。

1.Runnable只是接口,封装线程待执行的代码

2.执行时间与执行次数与线程有关,与Runnable无关

3.Runnable可以N次执行,即使限定线程池最大数也可以重复执行


原文链接:http://www.apkbus.com/blog-35555-68771.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消