变量
1. CPU_COUNT CPU总数
2. CORE_POOL_SIZE 核心线程数
3. MAXIMUM_POOL_SIZE 最大线程数
4. KEEP_ALIVE_SECONDS 非核心线程空闲存活时间
5. sThreadFactory 线程工厂,用作与给线程起名字
6. sPoolWorkQueue 线程队列,最多容纳128个线程
7. THREAD_POOL_EXECUTOR 双队列线程池,可以执行并行任务,sPoolWorkQueue用于此线程池
8. SERIAL_EXECUTOR 单队列线程池,按任务顺序一个一个执行,无任务数量限制
9. sDefaultExecutor 默认的线程池,就是持有SERIAL_EXECUTOR的引用
10. sHandler
11. mWorker
12. mFuture
13. mStatus
14. mCancelled
15. mTaskInvoked
16. mHandler
构造方法
1. AsyncTask() 调用了第三个构造,传空参数
2. AsyncTask(@Nullable Handler handler) 调用了第三个构造,传handler的Looper
3. AsyncTask(@Nullable Looper callbackLooper) 最主要的构造
AsuncTask共有三个构造方法 ,但第一第二个最终都调用了第三个构造方法,所以第三个是关键,第三构造方法由三个部分组成,分别为Handler、WorkerRunnable、FutureTask。
构造函数Handler:每一个AsyncTask实例都需要一个Handler来实现现成的切换,所以构造方法里创建了一个Handler,Handler的Looper分为主线程的和非主线程的,默认情况下是主线程的Looper,也可自定义传入非主线程Looper。
WorkerRunnable:是这个AsyncTask实例的工作任务,继承Callable,其核心在于在call方法内运行了doInBackground()方法,这就是异步任务,而AsyncTask选择用Callable而不是Runnable的意义在于Callable执行完任务会有返回结果,而Runnable没有,这正是AsyncTask的一个特点。
FutureTask:FutureTask是一个可取消的异步计算,一个FutureTask 可以用来包装一个 Callable 或是一个runnable对象。因为FurtureTask实现了Runnable方法,所以一个 FutureTask可以提交给一个Excutor执行。在AsyncTask中mFuture负责包装WorkerRunnable对象,并实现了done()方法返回执行结果。其中的get()方法为获取结果信息。
网友评论