2 qq 26337263 qq_26337263 于 2016.03.30 10:38 提问

Executor的执行方式?

我通过实现runable接口后定义任务后,把任务交给了Executor的实现类后,有她
帮我管理线程执行,Executor 她是把我的任务是同步执行还是异步的去执行?

1个回答

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.04.04 18:05

首先,同步异步是处理请求的方式,是否立即返回处理结果告知调用者,这里不存在同步异步执行任务的概念。
其次,Executor是java并发包中提供的一个创建线程池的工具类,而线程池分为多种,有单线程执行任务的,也有多线程执行任务的。
例如:

 Executors.newCachedThreadPool()创建的是多线程,那么线程池中缓存了N个线程去执行任务,那么你的任务就是有多个线程并行执行的。同时可以有多个任务被执行。
 Executors.newSingleThreadExecutor()这个就是创建的是但线程,即线程池中只有一个线程池去执行你提交的任务,那么认为执行就是顺序执行的,即只能一个接一个执行。

线程池的作用就是缓存线程,有线程去执行任务,各个任务之间是独立并行执行的。当然newSingleThreadExecutor这个就退化成单线程了。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Executor线程池的几种用法
下面将介绍线程池的几种用法 一、Executor执行Runnable任务import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class TestCachedThreadPool{ public static void main(String[]
Spark 任务调度之Executor执行task并返回结果
介绍Executor执行task并返回result给Driver。
java使用Executor(执行器)管理线程
v一.一个实现了Runnable接口的类 class MyThread implements Runnable{ private static int num = 0; @Override public void run() { while(true){ synchronized(MyThread.class){
spring实现定时任务的两种方式之spring @scheduled注解方式
1、使用spring的 scheduled使用注解的方式 这种方法的好处是:使用方便,配置少,提高开发效率; 缺点是:如果使用服务器集群部署方式的时候,其自身无法解决定时任务重复执行的问题。 2、首先在你的applicationContext.xml中加入以下配置: task:executor id="executor" pool-size="5" /> task:scheduler
Java的Executor框架和线程池实现原理
一,Java的Executor框架 1,Executor接口 public interface Executor { void execute(Runnable command); }Executor接口是Executor框架中最基础的部分,定义了一个用于执行Runnable的execute方法,它没有实现类只有另一个重要的子接口ExecutorService 2,Exe
获取Executor提交的并发执行的任务返回结果的两种方式/ExecutorCompletionService使用
当我们通过Executor提交一组并发执行的任务,并且希望在每一个任务完成后能立即得到结果,有两种方式可以采取:   方式一: 通过一个list来保存一组future,然后在循环中轮训这组future,直到每个future都已完成。如果我们不希望出现因为排在前面的任务阻塞导致后面先完成的任务的结果没有及时获取的情况,那么在调用get方式时,需要将超时时间设置为0 
java 并发编程中ExecutorService中execute方法和summit方法区别
最近在处理规模数据量巨大的数据时,想用多线程来提升计算速度,一点点总结。 Java中多线程常用方法有两大类,仪式无返回值的Runnable 接口的实现,具体的thread实现多线程又分为两种方法:1 实现Java.Lang.Runnable接口,重写run方法, 2 继承Java.Lang.Thread类,重写run 方法; 有线程返回值的类型实现Callable接口,可创建ExecutorS
ExecutorService的几种关闭线程池方法
ExecutorService的几种关闭线程池方法: ExecutorService executorService =Executors.newFixedThreadPool(1); 1、shutdown()方法在终止前允许执行以前提交的任务。 这个方法会顺次地关闭ExecutorService,当我们调用这个方法时,ExecutorService停止接受任何新的任务且等待已经提交的
Spark作业的Stage划分,Task创建分发一直到提交给Spark的Executor的线程池执行全过程
作业提交流程: 提交作业之后(省略SparkSubmit的分析不走) -> 反射创建mainClass  -> 初始化SparkContext -> 使用sparkContext创建RDD -> 执行count算子runJob(runJob是SparkContext中的)方法触发作业->调用sparkContext中dagScheduler的runJob方法->调用dagScheduler的su
Executor 生命周期
对于生命周期,我想我们已经听得够多了。比如Android的Activity生命周期(onCreate->onStart->onResume...),比如Servlet容器中的Servlet生命周期(init->service->destroy)。 了解一个对象的生命周期,会加深你对该对象所属框架的认识。因此,要想掌握某个对象,了解它的生命周期是必要的。 对于executor framework