前言
一般而言,我们在android程序代码中不要显式的创建线程,而是要采取线程池(也就是ThreadPoolExecutor类)的方式创建。-
关于线程池的几个类
直接上图
ThreadPoolExecutor的构造方法如下:
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线程池
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...