Android性能优化之使用线程池处理异步任务
来源:互联网 发布:php商城框架 编辑:程序博客网 时间:2024/06/05 04:21
转载自:http://blog.csdn.net/u010687392/article/details/49850803
1、创建线程有两种方式:
(1)继承Thread类
(2)实现Runnable接口
区别:
在多线程访问同一资源的情况下,用Runnable接口创建的线程可以处理同一资源,而用Thread类创建的线程则各自独立处理,各自拥有自己的资源。
所以,在Java中大多数多线程程序都是通过实现Runnable来完成的,而对于Android来说也不例外,当涉及到需要开启线程去完成某件事时,我们都会这样写:
new Thread(new Runnable() {
@Override
publicvoidrun() {
//do sth .
}
}).start();
这段代码创建了一个线程并执行,它在任务结束后GC会自动回收该线程,一切看起来如此美妙,是的,它在线程并发不多的程序中确实不错,
而假如这个程序有很多地方需要开启大量线程来处理任务,那么如果还是用上述的方式去创建线程处理的话,那么将导致系统的性能表现的非常糟糕,
更别说在内存有限的移动设备上,主要的影响如下:
1、线程的创建和销毁都需要时间,当有大量的线程创建和销毁时,那么这些时间的消耗则比较明显,将导致性能上的缺失
2、大量的线程创建、执行和销毁是非常耗cpu和内存的,这样将直接影响系统的吞吐量,导致性能急剧下降,如果内存资源占用的比较多,还很
可能造成OOM
3、大量的线程的创建和销毁很容易导致GC频繁的执行,从而发生内存抖动现象,而发生了内存抖动,对于移动端来说,最大的影响就是造成界面卡顿
而针对上述所描述的问题,解决的办法归根到底就是:重用已有的线程,从而减少线程的创建。
所以这就涉及到线程池(ExecutorService)的概念了,线程池的基本作用就是进行线程的复用,下面将具体介绍线程池的使用
2、
ExecutorService
- Android性能优化之使用线程池处理异步任务
- Android性能优化之使用线程池处理异步任务
- Android性能优化之使用线程池处理异步任务
- Android性能优化之使用线程池处理异步任务
- Android性能优化之使用线程池处理异步任务
- Android性能优化之使用线程池处理异步任务
- Android性能优化之使用线程池处理异步任务
- Android 性能优化之使用线程池处理异步任务
- Android性能优化之使用线程池处理异步任务
- Android 性能优化之使用线程池处理异步任务
- Android性能优化之使用线程池处理异步任务
- Android 性能优化之使用线程池处理异步任务
- Android性能优化之使用线程池处理异步任务
- Android性能优化之使用线程池处理异步任务
- Android 性能优化之使用线程池处理异步任务
- Android 性能优化之使用线程池处理异步任务
- Android性能优化之使用线程池处理异步任务
- Android性能优化之使用线程池处理异步任务
- Java服务部署上linux主机及shell脚本启停
- 分组统计
- Meta http-equiv属性详解
- 浅谈如何使用ADO.NET操作数据库
- 微信小程序 短信验证 功能的实现(附案例代码/前后端/直接用)
- Android性能优化之使用线程池处理异步任务
- 在QT中使用FFmpeg库
- 并发 并行 同步 异步 多线程的区别
- Centos 7 搭建Nginx , Docker (装rabbitMq,postgresql , gitlab镜像)
- 【安全牛学习笔记】基本工具-NETCAT(telnet/banner、传输文本信息)
- js对浏览器返回事件的捕获及禁用功能
- php jquery实现即点即改
- laravel中打印sql语句到日志中
- Hadoop入门之Hive的安装和连接