关于AsyncTask的一点问题
今天在尝试多线程异步下载图片的时候遇到一些问题,其中关于asynctask的一点问题之前没注意到,感到蛮有意思的,先记下来。
asynctask在实际运行过程中其实是由一个线程池控制的,这个线程池在启动大于5小于16个asynctask时会默认保持5个子线程,不会增加,大于5的那些消息会等5个子线程运行结束后才运行。且在asynctask的onPostExecute运行完后该线程也不会彻底终止,查看DDMS可以发现,这个线程池中的5个asynctask全处于wait状态。当启动的线程大于等于16个时,该线程池的线程数量会激增,基本上每新启一个asynctask都会建立一个单独的子线程。当大于5的子线程运行结束后会被彻底释放,最后还是会保持5个处于wait状态的子线程。
至于如何彻底清空这个线程池,释放处于wait状态的子线程,没有继续深入研究,初看没发现直观的可行方法。如何大家对这方面有研究的话希望能够不吝赐教,谢谢啦。