线程池的基本思想就是一个池的概念,做个比喻就向农村家里的水池一样,你要做饭的的时候在去很远的地方打水,这样肯定不好,在android中我们在使用线程去运行代码的的时候也会有这样的问题,当我们平凡使用线程(频繁你需要创建,销毁线程,这要是相当耗费系统资源的,这个时候我们就要用到线程池,在池中创建一个线程池。里面存放,在是用的时候重里面去拿,这样能节约系统资源 )
java中常用的线程池有三种,
>newFixedThreadPool
创建一个可重用的固定的线程池,已共享无界列队方式来运行这些线程,在任意一点,大多数线程thread是处于活动状态
在所有线程处于何跃状态的时候,新提交的任务,会在列队中等待,
executorServie pool = Executor.newFixedThreadPool(2)
.>创建一个单一线程
newSingleThreadExecutor
创建一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程。(注意,如果因为在关闭前的执行期间出现失败而终止了此单个线程,那么如果需要,一个新线程将代替它执行后续的任务)。可保证顺序地执行各个任务,并且在任意给定的时间不会有多个线程是活动的。与其他等效的 newFixedThreadPool(1) 不同,可保证无需重新配置此方法所返回的执行程序即可使用其他的线程。
newCachedThreadPool
创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。对于执行很多短期异步任务的程序而言,这些线程池通常可提高程序性能。调用 execute 将重用以前构造的线程(如果线程可用)。如果现有线程没有可用的,则创建一个新线程并添加到池中。终止并从缓存中移除那些已有 60 秒钟未被使用的线程。因此,长时间保持空闲的线程池不会使用任何资源。注意,可以使用 ThreadPoolExecutor 构造方法创建具有类似属性但细节不同(例如超时参数)的线程池。