1.什么是线程池(ExecutorService)
a.线程池的介绍:
* An {@link Executor} that provides methods to manage termination and
* methods that can produce a {@link Future} for tracking progress of
* one or more asynchronous tasks.
以上为官方描述,意思是提供管理终结和管理的方法。用于跟踪进度一个或多个异步任务。
2.使用方式:
ExecutorService 本身是一个接口,在JDK 1.5 以上版本有提供了几种线程池的实现方式。(既然是接口也就说明我们可以自己手写自己的线程池实现机制)
a)缓存线程池
executorService = Executors.newCachedThreadPool();
for (int i = 0; i < 5; i++) {
executorService.submit(new Runnable() {
@Override
public void run() {
Log.e(TAG, "logCacheThread: " + Thread.currentThread().getName());
}
});
}
executorService.shutdown();
每次提交任务如果有空闲线程则执行任务,若没有空闲线程则会创建新的线程执行任务,且执行完成任务的线程交由线程池管理,当生命周期超过一定时间时销毁。默认时间为60L。
b)固定最大连接数量线程池
executorService = Executors.newFixedThreadPool(2);
for (int i = 0; i < 5; i++) {
executorService.submit(new Runnable() {
@Override
public void run() {
Log.e(TAG, "logFixedThread: " + Thread.currentThread().getName());
}
});
}
executorService.shutdown();
每次提交任务会启动一个线程直至到达最大线程数量。