【多线程】五、线程池

相关文章:
【多线程】一、线程状态切换
【多线程】二、线程优先级&守护线程
【多线程】三、线程访问变量
【多线程】四、线程异常抓捕
【多线程】五、线程池
【多线程】六、锁与同步
【多线程】七、阻塞队列
【多线程】八、异步计算结果获取
【多线程】九、Android异步任务

为解决频繁线程创建、销毁带来的不必要损耗,推荐使用线程池。

ThreadPoolExecutor(
	corePoolSize, // 核心线程数,核心线程一直存活(即使空闲,除非allowCoreThreadTimeout(true))
	maximumPoolSize, // 最大线程数
	keepAliveTime, // 非核心线程闲置时长,超时线程会被回收
	timeUnit, // 时间单位,可用TimeUnit.MILLISECONDS
	workQueue, // 任务队列,BlockingQueue<Runnable>
	threadFactory, // 线程创建工程
	rejectedExecutionHandler, // 任务拒绝处理器, 默认ThreadPoolExecutor.AbortPolicy抛异常;
	);

@see AsyncTask::THREAD_POOL_EXECUTOR
Created with Raphaël 2.2.0新任务到达可建核心线程?创建线程执行服务结束任务队列已满?进队列等待可建非核心线程?创建线程执行拒绝执行yesnoyesnoyesno
预置线程池 说明
FixedThreadPool 固定核心线程数且无超时关闭,任务队列无上限
线程全忙时,新任务一直等待
适用请求频繁,数量基本固定的任务
CachedThreadPool 不定非核心线程数(MAX_INT)超时60s关闭
空任务队列(SynchronousQueue<Runnable>),新任务立即执行
适用数量庞大,耗时较少的任务
ScheduledThreadPool 核心线程数固定无超时关闭
非核心线程无限制(MAX_INT)空闲立即回收
空任务队列,新任务立即执行
适用于定时任务 或 周期性执行的重复任务
SingleThreadPool 单核心线程,确保任务顺序执行(串行)
单线程模型可避免同步问题
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章