继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

线程池ThreadPoorExector

陪伴而非守候
关注TA
已关注
手记 219
粉丝 61
获赞 284

!通过阅读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

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP