前段时间有幸接到腾讯上海分公司的 Android开发面试,虽然最后一轮被毙了。但还是得总结一下自己在android开发中的一些盲点,最让我尴尬的是面试官问我几个android中线程池的使用与理解。。哎。。平时就知道new 线程要么用Asynctask,再者就是从github上下载大神写的一些开源库,虽然里面涉及到了线程池,但自己最多就是改改里面的最大线程数,没有仔细研究里面对线程池的使用。。结果被腾讯鄙视了一回。。。。。好了牢骚发完了。。我来分享一下我对这块知识点的理解。
先给大家给两个连接
http://www.eoeandroid.com/thread-210082-1-1.html这篇帖子总结了android中如何具体的使用ExecutorService
http://mzh3344258.blog.51cto.com/1823534/1313611这边帖子总结了ExecutorService中不同的线程池类别及使用规则
我觉得使用线程池最大的优点是我们可以对我们开启的线程进行跟进,当我们不需要处理的时候可以将它shutdow掉,同时当我们定义了一个线程池之后,可以复用线程而不需要开启更多线程,这点对于我们手机开发是至关重要的,你开启的thread越多意味着你的app内存消耗越多,速度也就越来越慢,提高现有线程的复用是一个很棒的选择
线程池中处理线程的类别较多如:
限制按顺序来执行任务的线程池、一个一个任务的执行线程池、按指定个数来执行任务的线程池、创建一个可在指定时间里执行任务的线程池,亦可重复执行、按指定工厂模式来执行的线程池