Android(安卓)AsynTask 与Thread 或线程池 使用分析
16lz
2021-01-26
做Android的都知道,AsynTask 就是google 给我提供的一个在另一个线程 执行任务的工具. 从某种层面上将 , 他就是实现了 java 里面的Thread 的功能
但是经常在网上看到说, 推荐使用AsynTask 少用Thread 这是为什么?
我也看了下 AsynTask 的源码 其实挺简单的, 里面有两个 静态的线程池, 一个是同步线程池, 该线程最多可同时执行128个线程 一个是顺序执行的线程, 只有上一个线程执行完毕才执行下一个线程,
ok 基本明白了 AsynTask 的工作原理 那么为什么推荐使用AsynTask呢?
原因有: 开辟线程是很费时间的, 所有用线程池会好一些
那为什么不自己整一个线程池呢? 其实也可以自己整一个线程池, 但是自己如果管理的不好也是会造成一些问题, 看过一些代码, 在一些逻辑处理的类中, 都new 了一个线程池, 这个我们在执行线程的时候,看似是在使用线程池, 没有单独的new 线程, 但是new 了很多线程池 这个难免也 很耗性能
问了认识的大牛, 他们说他们公司规定 线程都用AsynTask , 不能自己new Thread 或new线程池 这样是为了在性能分析的时候方便一些, 他们之的代码也是很多自己new的Thread 后面在做性能优化的时候 看多很多线程乱七八糟 ,后面都规定使用AsynTask 就规范很多了
还有一点确实好, 那就是在使用AsynTask 确实不自己随意的new Thread 节省一些性能
关于线程分析, 也向那位大牛学到了一些, 就是使用DDMS工具
最后会生成这样的线程数据:
更深入的可以参考这边文章: http://blog.jobbole.com/78995/
关于AsynTask 更深入的分析可以参考下面文章: http://bbs.51cto.com/thread-1114378-1-1.html
但是经常在网上看到说, 推荐使用AsynTask 少用Thread 这是为什么?
我也看了下 AsynTask 的源码 其实挺简单的, 里面有两个 静态的线程池, 一个是同步线程池, 该线程最多可同时执行128个线程 一个是顺序执行的线程, 只有上一个线程执行完毕才执行下一个线程,
我们在使用AsynTask 的时候可以选择不同的方式去执行
new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... params) { return null; }}.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);
public static final Executor THREAD_POOL_EXECUTOR = new ThreadPoolExecutor(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE, TimeUnit.SECONDS, sPoolWorkQueue, sThreadFactory);public static final Executor SERIAL_EXECUTOR = new SerialExecutor();
ok 基本明白了 AsynTask 的工作原理 那么为什么推荐使用AsynTask呢?
原因有: 开辟线程是很费时间的, 所有用线程池会好一些
那为什么不自己整一个线程池呢? 其实也可以自己整一个线程池, 但是自己如果管理的不好也是会造成一些问题, 看过一些代码, 在一些逻辑处理的类中, 都new 了一个线程池, 这个我们在执行线程的时候,看似是在使用线程池, 没有单独的new 线程, 但是new 了很多线程池 这个难免也 很耗性能
问了认识的大牛, 他们说他们公司规定 线程都用AsynTask , 不能自己new Thread 或new线程池 这样是为了在性能分析的时候方便一些, 他们之的代码也是很多自己new的Thread 后面在做性能优化的时候 看多很多线程乱七八糟 ,后面都规定使用AsynTask 就规范很多了
还有一点确实好, 那就是在使用AsynTask 确实不自己随意的new Thread 节省一些性能
关于线程分析, 也向那位大牛学到了一些, 就是使用DDMS工具
最后会生成这样的线程数据:
更深入的可以参考这边文章: http://blog.jobbole.com/78995/
关于AsynTask 更深入的分析可以参考下面文章: http://bbs.51cto.com/thread-1114378-1-1.html
更多相关文章
- Android自己主动化測试——CTS測试
- Android线程通信之Handler
- android中非阻塞socket通信
- 【移动开发】Android中异步加载数据(一)Handler + Thread
- Hackborn的吐槽和Munn的剖析: Android(安卓)graphics低性能背后
- 探讨android更新UI的几种方法
- Android读书笔记(2)—— IPC机制
- Android和用户交互的媒介Activity-生命周期方法
- Android之Http网络编程(二)