多线程 submit与execute区别】的更多相关文章

(1)可以接受的任务类型 submit: execute: 可以看出: execute只能接受Runnable类型的任务 submit不管是Runnable还是Callable类型的任务都可以接受,但是Runnable返回值均为void,所以使用Future的get()获得的还是null (2)返回值 由Callable和Runnable的区别可知: execute没有返回值 submit有返回值,所以需要返回值的时候必须使用submit (3)异常 1.execute中抛出异常 execute…
execute(Runnable x) 没有返回值.可以执行任务,但无法判断任务是否成功完成. submit(Runnable x) 返回一个future.可以用这个future来判断任务是否成功完成. 在Java5之后,任务分两类:一类是实现了Runnable接口的类,一类是实现了Callable接口的类. 两者都可以被ExecutorService执行 Future future = pool.submit(new RunnableTest("Task2"));          …
submit和execute都是 ExecutorService 的方法,都是添加线程到线程池中. 区别 三个区别: 1.接收的参数不一样 2.submit有返回值,而execute没有 Method submit extends base method Executor.execute by creating and returning a Future that can be used to cancel execution and/or wait for completion. 用到返回值…
1.可以接受的任务类型 submit: execute: 可以看出: execute只能接受Runnable类型的任务 submit不管是Runnable还是Callable类型的任务都可以接受,但是Runnable返回值均为void,所以使用Future的get()获得的还是null 2.返回值 由Callable和Runnable的区别可知: execute没有返回值 submit有返回值,所以需要返回值的时候必须使用submit 3.异常 1.execute中抛出异常 execute中的是…
在线程池里提交任务经常见到submit与execute,如何选择,傻傻分不清楚.那么他们俩有什么区别,使用场景是什么?这篇博客将会介绍. 1.方法定义 void execute(Runnable command); Future<T> submit(Callable<T> task); Future<T> submit(Runnable task, T result); Future<?> submit(Runnable task); 2.使用上的区别 2.…
前言 使用线程池难免会用到submit和execute,但是submit是有坑的,此处做个记录 1.submit坑 此处随便写一个方法,进入内部查看execute和submit /** * @Author: 小混蛋 * @CreateDate: 2018/8/29 9:58 */ @Component public class Test { public static void main(String[] args) { ExecutorService es = Executors.newFix…
submit方法: public abstract class AbstractExecutorService implements ExecutorService { protected <T> RunnableFuture<T> newTaskFor(Runnable runnable, T value) { return new FutureTask<T>(runnable, value); } protected <T> RunnableFuture…
就跟题目说的一样,本篇博客,本宝宝主要介绍两个方面的内容,其一:线程池的类型及其应用场景:其二:submit和execute的区别.那么需要再次重申的是,对于概念性的东西,我一般都是从网上挑选截取,再结合自己的想法进行说明. 一.线程池概述 首先,线程池的使用,是非必须的.并不是涉及到启用多线程的地方,就非得整出个线程池出来! 1.1,什么是线程池 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务.线程池线程都是后台线程. 1.2,为什么用 备注:个人瞎扯…
就跟题目说的一样,本篇博客,本宝宝主要介绍两个方面的内容,其一:线程池的类型及其应用场景:其二:submit和execute的区别.那么需要再次重申的是,对于概念性的东西,我一般都是从网上挑选截取,再结合自己的想法进行说明. 一.线程池概述 首先,线程池的使用,是非必须的.并不是涉及到启用多线程的地方,就非得整出个线程池出来! 1.1,什么是线程池 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务.线程池线程都是后台线程. 1.2,为什么用 备注:个人瞎扯…
在使用java.util.concurrent下关于线程池一些类的时候,相信很多人和我一样,总是分不清submit()和execute()的区别,今天从源码方面分析总结一下. 通常,我们通过Executors这个工具类提供多种方法来创建适合不同场景的线程池,这里就不一一介绍了. 例如,创建可缓存线程池,Executors.newCachedThreadPool(),源码如下: public static ExecutorService newCachedThreadPool() { return…