Executor简介
Posted longfurcat
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Executor简介相关的知识,希望对你有一定的参考价值。
Executor是一个接口,这个接口负责执行提交给它的任务(Runnable对象)。这个接口能够使“任务提交”与“任务执行”解耦。即某人只要把任务提交给Executor就好了,至于它怎么给任务分配线程去执行,你就不用管了。
注:
①任务执行包括线程的如何使用,如何调度等等。
②一般情况下,会选择使用Executor,而不是直接创建Thread。
比如,你不会每次都这样写:
new Thread(new (RunnableTask())).start();
而是:
Executor executor = anExecutor; executor.execute(new RunnableTask1()); executor.execute(new RunnableTask2());
但是,Executor接口并不严格要求执行操作是异步的。在最简单的实现例子中,一个执行器,可以直接在调用所在的线程上运行提交的任务,如下所示,如果main线程给这个DirectExecutor提交了一个任务,那么执行这个任务的还是main线程。因为它没有单独创建线程。
class DirectExecutor implements Executor { public void execute(Runnable r) { r.run(); } }
更典型的是,提交的任务将被非调用线程的其他线程所执行。下面这个执行器就为每个任务产生一个新的线程。
class ThreadPerTaskExecutor implements Executor { public void execute(Runnable r) { new Thread(r).start(); } }
一些Executor实现,对任务如何以及何时被安排强加了一些限制。下面的这个执行器序列化了任务的提交给第二个执行器。形成一个复合的executor.
Executor.java(源码)
以上是关于Executor简介的主要内容,如果未能解决你的问题,请参考以下文章
片段无法转换为 java.util.concurrent.Executor 错误
#yyds干货盘点# mybatis源码解读:executor包(语句处理功能)
转:Java并发编程之十九:并发新特性—Executor框架与线程池(含代码)
Android 逆向类加载器 ClassLoader ( 类加载器源码简介 | BaseDexClassLoader | DexClassLoader | PathClassLoader )(代码片段