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()区别相关推荐

  1. java_多线程——线程池、submit和execute区别

    一.线程池的概念 顾名思义就是事先准备一个池子(线程池),初始化一些线程,当使用可以快速调用,不用再初始化线程,使用完成后,不再销毁该线程,归还到线程池,方便后面复用.节省创建和销毁线程资源,提高线程 ...

  2. submit与execute区别

    (1)可以接受的任务类型 submit: execute: 可以看出: execute只能接受Runnable类型的任务 submit不管是Runnable还是Callable类型的任务都可以接受,但 ...

  3. 线程池ExecutorService中submit和execute区别

    1.execute是接口Executor的方法 ,submit是Executor子接口ExecutorService的方法(ExecutorService接口继承了Executor接口,Executo ...

  4. 一心多用多线程-细谈java线程池submit与execute的区别

    深夜学习,发现ThreadPoolExecutor里面一个小知识点,故开热点连wifi怒写submit与execute方法的区别. 1.问题的来源 在看书的时候,涉及到java线程池问题的时候常常面临 ...

  5. Submit和execute的区别

    深夜学习,发现ThreadPoolExecutor里面一个小知识点,故开热点连wifi怒写submit与execute方法的区别. 1.问题的来源 在看书的时候,涉及到java线程池问题的时候常常面临 ...

  6. 血的教训--如何正确使用线程池submit和execute方法

    血的教训之背景:使用线程池对存量数据进行迁移,但是总有一批数据迁移失败,无异常日志打印 凶案起因 ​ 听说parallelStream并行流是个好东西,由于日常开发stream串行流的场景比较多,这次 ...

  7. ExecutorService中submit和execute的区别转

    在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于新的启动.调度.管理线程的一大堆API了.在Java5以后,通过Executor来启动线程比用Thread的start()更好.在新特征中 ...

  8. 线程池的submit和execute方法区别

    线程池中的execute方法大家都不陌生,即开启线程执行池中的任务.还有一个方法submit也可以做到,它的功能是提交指定的任务去执行并且返回Future对象,即执行的结果.下面简要介绍一下两者的三个 ...

  9. ExecutorService中submit和execute的区别(转)

    在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于新的启动.调度.管理线程的一大堆API了.在Java5以后,通过Executor来启动线程比用Thread的start()更好.在新特征中 ...

最新文章

  1. “编程能力差!90%输在这点上”谷歌AI专家:其实都是瞎努力!
  2. CISCO路由器ADSL拨号配置
  3. numpy使用MKL库提升计算性能
  4. Vue -项目创建(rem适配项的设置)
  5. 笔记本启动与关闭自带键盘
  6. Java final 关键字简述
  7. Merkle Patricia Tree 详解
  8. 培训loadrunner感受
  9. php dom 分离html内容
  10. 中获取当月天数_给商品期货策略加上一个闹钟--策略中的定时设计
  11. scala入门学习之类的使用
  12. sql server 2005 Express 下载
  13. (附源码)ssm教培管理系统 毕业设计 230932
  14. 阿里云mysql读写分离实现_MySQL-Proxy实现MySQL读写分离
  15. VC程序获取管理员权限
  16. 郭沫若最恶心的7首诗_表面和气的郭沫若徐志摩,却因一首诗中的4字闹翻,到底谁有理?...
  17. Mathematica 分段函数 求导 求积分
  18. 电脑忘记密码了怎么办
  19. 华为薪资等级结构表_2018华为等级工资表一览
  20. 微信小程序 开发工具 项目创建步骤

热门文章

  1. 面试官如何考察你的思维方式?
  2. 网易 盖楼 实现_网易严选宣布“退出鼓吹过度消费的双十一”网友:逆向营销...
  3. 社交类app开发( 仿陌陌 客户端+服务器端)
  4. Overleaf编译问题
  5. 多国语言在线客服系统源码+软件下载二合一集成
  6. java文件太大 上传不了怎么办_上传文件(200M)过大失败,想提高成800M
  7. PyDev for Eclipse 简介
  8. 如何制作数据可视化网页
  9. 深圳市十堰商友会在2019迎新联谊会上为帮扶老乡创业就业携手献策
  10. 《Android群英传》读书笔记---10.2(终篇)