Async Task的 onCanceled()方法和onPostExecute()方法互斥
Async Task之前是串行执行任务,后来采用线程池异步执行任务,再后来为了避免并发错误,
execute()又采用串行执行任务,但是可以通过executeOnExecutor()来串行执行任务。
AsyncTask里面有两种线程池供我们调用
1. THREAD_POOL_EXECUTOR, 异步线程池
2. SERIAL_EXECUTOR,同步线程池
一个是异步线程池,多个任务在线程池中并发执行;还有一个是同步执行的。默认调用execute,是使用SERIAL_EXECUTOR
- AsyncTask里面有THREAD_POOL_EXECUTOR和SERIAL_EXECUTOR两种方式来异步执行任务;THREAD_POOL_EXECUTOR是异步的,而SERIAL_EXECUTOR任务是顺序执行的。
- THREAD_POOL_EXECUTOR如果添加的任务过多,没有及时处理的话,会导致程序崩溃,它的队列size是128;它的调度规则是核心池大小,队列大小,以及最大线程数和异常处理Handler来决定的。
- SERIAL_EXECUTOR本质是在THREAD_POOL_EXECUTOR的基础上添加一个mTasks的集合来保证任务的顺序执行。
网友评论