submit()和execute()区别
1、接收的参数不同
由以上图看出,execute()只能接受Runnable类型参数,而submit()函数还可以接受Callable类型参数;
2、有无返回值
submit()函数都有返回值Future,而execute()函数没有返回值;
3、submit()方便exception处理
submit()函数可以通过Future.get()函数可以判断任务是不是执行完成;
如果在task里会抛出checked或者unchecked exception,而又希望外面的调用者能够感知这些exception并做出及时的处理,那么就需要用到submit,通过捕获Future.get抛出的异常。
class RunnableTest implements Runnable{private String taskName;public RunnableTest(final String taskName){this.taskName=taskName;}public void run(){System.out.println("inside "+taskName);throw new RuntimeException("exception from "+taskName);}
}public class submitVSexecute {public static void main(String[] args) {ExecutorService pool=Executors.newFixedThreadPool(2);pool.execute(new RunnableTest("task1"));Future task2 = pool.submit(new RunnableTest("task2"));try{if(task2.get()==null){System.out.println("任务完成");}}catch(InterruptedException e){}catch(ExecutionException e){System.out.println(e.getCause().getMessage());}}
}
submit()和execute()区别相关推荐
- java_多线程——线程池、submit和execute区别
一.线程池的概念 顾名思义就是事先准备一个池子(线程池),初始化一些线程,当使用可以快速调用,不用再初始化线程,使用完成后,不再销毁该线程,归还到线程池,方便后面复用.节省创建和销毁线程资源,提高线程 ...
- submit与execute区别
(1)可以接受的任务类型 submit: execute: 可以看出: execute只能接受Runnable类型的任务 submit不管是Runnable还是Callable类型的任务都可以接受,但 ...
- 线程池ExecutorService中submit和execute区别
1.execute是接口Executor的方法 ,submit是Executor子接口ExecutorService的方法(ExecutorService接口继承了Executor接口,Executo ...
- 一心多用多线程-细谈java线程池submit与execute的区别
深夜学习,发现ThreadPoolExecutor里面一个小知识点,故开热点连wifi怒写submit与execute方法的区别. 1.问题的来源 在看书的时候,涉及到java线程池问题的时候常常面临 ...
- Submit和execute的区别
深夜学习,发现ThreadPoolExecutor里面一个小知识点,故开热点连wifi怒写submit与execute方法的区别. 1.问题的来源 在看书的时候,涉及到java线程池问题的时候常常面临 ...
- 血的教训--如何正确使用线程池submit和execute方法
血的教训之背景:使用线程池对存量数据进行迁移,但是总有一批数据迁移失败,无异常日志打印 凶案起因 听说parallelStream并行流是个好东西,由于日常开发stream串行流的场景比较多,这次 ...
- ExecutorService中submit和execute的区别转
在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于新的启动.调度.管理线程的一大堆API了.在Java5以后,通过Executor来启动线程比用Thread的start()更好.在新特征中 ...
- 线程池的submit和execute方法区别
线程池中的execute方法大家都不陌生,即开启线程执行池中的任务.还有一个方法submit也可以做到,它的功能是提交指定的任务去执行并且返回Future对象,即执行的结果.下面简要介绍一下两者的三个 ...
- ExecutorService中submit和execute的区别(转)
在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于新的启动.调度.管理线程的一大堆API了.在Java5以后,通过Executor来启动线程比用Thread的start()更好.在新特征中 ...
最新文章
- “编程能力差!90%输在这点上”谷歌AI专家:其实都是瞎努力!
- CISCO路由器ADSL拨号配置
- numpy使用MKL库提升计算性能
- Vue -项目创建(rem适配项的设置)
- 笔记本启动与关闭自带键盘
- Java final 关键字简述
- Merkle Patricia Tree 详解
- 培训loadrunner感受
- php dom 分离html内容
- 中获取当月天数_给商品期货策略加上一个闹钟--策略中的定时设计
- scala入门学习之类的使用
- sql server 2005 Express 下载
- (附源码)ssm教培管理系统 毕业设计 230932
- 阿里云mysql读写分离实现_MySQL-Proxy实现MySQL读写分离
- VC程序获取管理员权限
- 郭沫若最恶心的7首诗_表面和气的郭沫若徐志摩,却因一首诗中的4字闹翻,到底谁有理?...
- Mathematica 分段函数 求导 求积分
- 电脑忘记密码了怎么办
- 华为薪资等级结构表_2018华为等级工资表一览
- 微信小程序 开发工具 项目创建步骤
热门文章
- 面试官如何考察你的思维方式?
- 网易 盖楼 实现_网易严选宣布“退出鼓吹过度消费的双十一”网友:逆向营销...
- 社交类app开发( 仿陌陌 客户端+服务器端)
- Overleaf编译问题
- 多国语言在线客服系统源码+软件下载二合一集成
- java文件太大 上传不了怎么办_上传文件(200M)过大失败,想提高成800M
- PyDev for Eclipse 简介
- 如何制作数据可视化网页
- 深圳市十堰商友会在2019迎新联谊会上为帮扶老乡创业就业携手献策
- 《Android群英传》读书笔记---10.2(终篇)