ExecutorService 的理解与使用
来源:互联网 发布:见过好听的名字 知乎 编辑:程序博客网 时间:2024/05/22 12:13
ExecutorService其中一个线程池的接口,因为安卓系统对内存的要求特别高,所以当我要异步调用一些耗时线程成就可能会开好几条,这样很容易造成OOM。所以我每个APP在创建之前就会在BaseActivity加入自定义类的对象AsyncTaskExecutor 来控制线程的数量。代码如下:
public class AsyncTaskExecutor {private static AsyncTaskExecutor mInstance = null;private static final int maxExecutor = 4;private ExecutorService mExecutor = null;public static AsyncTaskExecutor getinstance() {if (mInstance == null) {mInstance = new AsyncTaskExecutor();}return mInstance;}private AsyncTaskExecutor() {mExecutor = Executors.newFixedThreadPool(maxExecutor);}public void submit(Runnable a) {mExecutor.execute(a);}}解释:
// newFixedThreadPool内部有个任务队列,假设线程池里有3个线程,提交了5个任务,那么后两个任务就放在任务队列了,即使前3个任务sleep或者堵塞了,也不会执行后两个任务,除非前三个任务有执行完的。
源码解析
public static ExecutorService newFixedThreadPool(int nThreads) { return new ThreadPoolExecutor(nThreads, nThreads, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());}
这是源码,你看看返回的是个什么。在让你看看他们的关系
public interface ExecutorService extends Executor
public abstract class AbstractExecutorService implements ExecutorService
public class ThreadPoolExecutor extends AbstractExecutorService
一般现在基类实例化对象
然后在继承基类里直接调用方法
阅读全文
0 0
- ExecutorService 的理解与使用
- ExecutorService 的理解与使用
- ExecutorService 的理解与使用
- ExecutorService 的理解与使用
- ExecutorService 的理解与使用
- ExecutorService 的理解与使用
- ExecutorService 的理解与使用
- ExecutorService 的理解与使用
- ExecutorService 的理解与使用
- ExecutorService 的理解与使用
- ExecutorService 的理解与使用
- ExecutorService 的理解与使用
- ExecutorService 的理解与使用
- ExecutorService 的理解与使用
- ExecutorService 的理解与使用
- ExecutorService 的理解与使用
- ExecutorService 的理解与使用
- ExecutorService 的理解与使用
- 兼容
- 某网站的一己之见
- git添加公钥后报错sign_and_send_pubkey: signing failed: agent refused operation的解决办法
- 【K-D树 求最近最远距离】BZOJ 1941 [Sdoi2010]Hide and Seek
- ubuntu16交叉编译Qt5.9
- ExecutorService 的理解与使用
- Python 性能优化
- 介绍一下Spring Cloud简介
- javascript学习(十八)— jQuery选择器(二)
- 软件调试笔记29
- notepad++ 根据文件内容查找文件
- 输入输出系统(四)
- 公众号三级分销使用到的php类和函数
- 【程序人生】程序员成长历程的四个阶段