多线程和线程池

子线程

Android的线程主要分为主线程和子线程两类,主线程主要处理和界面相关的工作,子线程主要处理耗时操作。除Thread之外,Android中还有其他扮演线程的角色如AsyncTask、IntentService、HandleThread,其中AsyncTask的底层用到了线程池,IntentService和HandleThread的底层直接使用了线程。

AsyncTask内部封装了线程池和Handler主要是为了方便开发者在在线程中更新UI;

HandlerThread是一个具有消息循环的线程,它的内部可以使用Handler;

IntentService是一个服务,系统对其进行了封装使其可以更方便的执行后台任务,IntentService内部采用HandleThread来执行任务,当任务执行完毕后IntentService会自动退出。IntentService是一个服务但是它不容易被系统杀死因此它可以尽量的保证任务的执行。

Android的线程和线程池_android 线程池-CSDN博客

线程池

当有新任务来的时候,先看看当前的线程数有没有超过核心线程数,如果没超过就直接新建一个线程来执行新的任务,如果超过了就看看缓存队列有没有满,没满就将新任务放进缓存队列中,满了就新建一个线程来执行新的任务,如果线程池中的线程数已经达到了指定的最大线程数了,那就根据相应的策略拒绝任务。

当缓存队列中的任务都执行完了的时候,线程池中的线程数如果大于核心线程数,就销毁多出来的线程,直到线程池中的线程数等于核心线程数。此时这些线程就不会被销毁了,它们一直处于阻塞状态,等待新的任务到来。

线程池详解(ThreadPoolExecutor) - 知乎

Android 线程池_孟芳芳的博客-CSDN博客

Android中的线程池-应用场景分析笔记 - 掘金

Android 线程池-CSDN博客

Android开发中的线程池使用_android 线程池使用-CSDN博客

线程池是如何重复利用空闲的线程来执行任务的?_程序员小乐的博客-CSDN博客

android 服务线程 android线程池详解_archangle的技术博客_51CTO博客

你可能感兴趣的:(Adroid面试题,android)