1. Runnable任务没有返回值,而Callable任务有返回值。并且Callablecall()方法只能通过ExecutorServicesubmit(Callable <T> task) 方法来执行
  2.  
  3. public class RunnableTestMain {
  4.  
  5. public static void main(String[] args) {
  6. ExecutorService pool = Executors.newFixedThreadPool(2);
  7.  
  8. /**
  9. * execute(Runnable x) 没有返回值。可以执行任务,但无法判断任务是否成功完成。
  10. */
  11. pool.execute(new RunnableTest("Task1"));
  12.  
  13. /**
  14. * submit(Runnable x) 返回一个future。可以用这个future来判断任务是否成功完成。请看下面:
  15. */
  16. Future future = pool.submit(new RunnableTest("Task2"));
  17.  
  18. try {
  19. if(future.get()==null){//如果Future's get返回null,任务完成
  20. System.out.println("任务完成");
  21. }
  22. } catch (InterruptedException e) {
  23. } catch (ExecutionException e) {
  24. //否则我们可以看看任务失败的原因是什么
  25. System.out.println(e.getCause().getMessage());
  26. }
  27.  
  28. }
  29.  
  30. }
  31.  
  32. public class RunnableTest implements Runnable {
  33.  
  34. private String taskName;
  35.  
  36. public RunnableTest(final String taskName) {
  37. this.taskName = taskName;
  38. }
  39.  
  40. @Override
  41. public void run() {
  42. System.out.println("Inside "+taskName);
  43. throw new RuntimeException("RuntimeException from inside " + taskName);
  44. }
  45.  
  46. }

转自:http://blog.163.com/huxb23@126/blog/static/625898182011121232077/

ExecutorService的submit(Runnable x)和execute(Runnable x) 两个方法的本质区别的更多相关文章

  1. ExecutorService.execute(Runnable x) 判断是否完成,得到返回值

    public class RunnableTestMain { public static void main(String[] args) { ExecutorService pool = Exec ...

  2. ExecutorService中submit()和execute()的区别

    在使用java.util.concurrent下关于线程池一些类的时候,相信很多人和我一样,总是分不清submit()和execute()的区别,今天从源码方面分析总结一下. 通常,我们通过Execu ...

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

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

  4. ExecutorService中submit和execute的区别

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

  5. 多线程ExecutorService中submit和execute区别

    submit和execute都是 ExecutorService 的方法,都是添加线程到线程池中. 区别 三个区别: 1.接收的参数不一样 2.submit有返回值,而execute没有 Method ...

  6. ExecutorService中submit和execute的区别<转>

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

  7. ExecutorService的submit方法使用

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

  8. Java线程池中submit()和execute()方法有什么区别

    两个方法都可以向线程池提交任务,execute()方法的返回类型是void,它定义在Executor接口中,而submit()方法返回有计算结构的Future对象,它定义在ExecutorServic ...

  9. ExecutorService的submit方法的坑

    先看一段代码: public Future<?> submit(Runnable task) { if (task == null) throw new NullPointerExcept ...

随机推荐

  1. 快速排序(js版本)

    快速排序的时间复杂度为:O(n*log2n),相比较其他O(n2)的排序算法,还是比较有优势的.原文参考在此处,因为本人对原文的一小段代码有点不理解,所以进行了小的修改. 1.基本思想:在数组的第一个 ...

  2. HTML5入门总结 HTML5API

    w3cshools  MDN英文  MDN中文 HTML5 HTML5 is the latest evolution of the standard that defines HTML. The t ...

  3. 利用poi向excle写入数据

    import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import org ...

  4. PHPMailer实现PHP邮件发送

    1.首先是下载PHPMailer http://code.google.com/a/apache-extras.org/p/phpmailer/ 2.解压 从中取出class.phpmailer.ph ...

  5. -webkit-overflow-scrolling

    -webkit-overflow-scrolling 属性 控制元素在移动设备上是否使用滚动回弹效果. 取值 auto    使用普通滚动, 当手指从触摸屏上移开,滚动会立即停止. touch   使 ...

  6. Linux_Cytoscape

  7. (十二)this关键字

    ---摘自孤傲苍狼博客 一.this关键字 this是一个引用,它指向自身的这个对象. 看内存分析图:

  8. 对jquery新增加的class绑定事件

    当页面加载时,就会注册所有的事件,后面通过jquery新增的内容(<div class="item"></div>),再对新增的添加事件$(".i ...

  9. hitTest和pointInside和CGRectContainsPoint

    很多app中TabBar中间会有个凸起超出部分,为了点击超出父视图但是还想让按钮响应 //重写hitTest方法,去监听发布按钮的点击,目的是为了让凸出的部分点击也有反应- (UIView *)hit ...

  10. jQuery第五章

    jQuery对表单.表格的操作以及更多应用 一.表单应用 1.单行文本框应用 (1)获取和失去焦点改变样式 HTML代码如下: <form action="#" method ...