`

Java线程:新特征-有返回值的线程

阅读更多

在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写。或者干脆绕过这道坎,走别的路了。

  现在Java终于有可返回值的任务(也可以叫做线程)了。

  可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口。

  执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了。

  下面是个很简单的例子:

  


import java.util.concurrent.*;
  /**
  * Java线程:有返回值的线程
  *
  * @author Administrator 2009-11-5 0:41:50
  */
  public class Test {
  public static void main(String[] args) throws ExecutionException, InterruptedException {
  //创建一个线程池
  ExecutorService pool = Executors.newFixedThreadPool(2);
  //创建两个有返回值的任务
  Callable c1 = new MyCallable("A");
  Callable c2 = new MyCallable("B");
  //执行任务并获取Future对象
  Future f1 = pool.submit(c1);
  Future f2 = pool.submit(c2);
  //从Future对象上获取任务的返回值,并输出到控制台
  System.out.println(">>>"+f1.get().toString());
  System.out.println(">>>"+f2.get().toString());
  //关闭线程池
  pool.shutdown();
  }
  }
  class MyCallable implements Callable{
  private String oid;
  MyCallable(String oid) {
  this.oid = oid;
  }
  @Override
  public Object call() throws Exception {
  return oid+"任务返回的内容";
  }
  }



 >>>A任务返回的内容
  >>>B任务返回的内容
  Process finished with exit code 0


  非常的简单,要深入了解还需要看Callable和Future接口的API啊。
http://coach.iteye.com/blog/743193

分享到:
评论

相关推荐

    java多线程编程总结

    Java线程:新特征-有返回值的线程 Java线程:新特征-锁(上) Java线程:新特征-锁(下) Java线程:新特征-信号量 Java线程:新特征-阻塞队列 Java线程:新特征-阻塞栈 Java线程:新特征-条件变量 Java线程:新特征...

    Java多线程编程总结

    Java线程:新特征-有返回值的线程 Java线程:新特征-锁(上) Java线程:新特征-锁(下) Java线程:新特征-信号量 Java线程:新特征-阻塞队列 Java线程:新特征-阻塞栈 Java线程:新特征-条件变量 Java线程...

    Java 线程总结

    Java线程:新特征-有返回值的线程 Java线程:新特征-锁(上) Java线程:新特征-锁(下) Java线程:新特征-信号量 Java线程:新特征-阻塞队列 Java线程:新特征-阻塞栈 Java线程:新特征-条件变量 Java线程:新特征...

    java线程详解

    Java线程:新特征-有返回值的线程 Java线程:新特征-锁(上) Java线程:新特征-阻塞队列 Java线程:新特征-阻塞栈 Java线程:新特征-条件变量 Java线程:新特征-原子量 Java线程:新特征-障碍器 Java线程:...

    java线程的run()没有返回值怎么办?

    java线程的run()没有返回值怎么办?本文给出了java线程的run()返回值为空的解决办法,感兴趣的小伙伴们可以参考一下

    在Java 线程中返回值的用法

    NULL 博文链接:https://icgemu.iteye.com/blog/467848

    线程的创建与撤销

    它在调用进程的地址空间上创建一个线程,执行指定的函数,并返回新建立线程的句柄。 原型: HANDLE CreateThread(  LPSECURITY_ATTRIBUTES lpThreadAttributes,  DWORD dwStackSize,  LPTHREAD_START_ROUTINE ...

    Java线程面试题Top50[参照].pdf

    Java 线程面试题 Top 50 Java 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。 一、什么是...

    使用Runnable模拟Callable接口实现线程有返回值

    大家都知道Runnable和Callable接口都可以作为其他线程执行的任务,但是Runnable接口的run方法没有返回值,而Callable接口的call方法有返回值,那么Callable接口是如何做到的呢?在此我给出一个Demo,看看通过...

    java线程文档大全

    包含java线程的概念、原理、交互、合并、让步、守护、休眠、同步、锁以及新特性 锁 线程池 信号量 有返回值的线程 原子量 障碍器 阻塞列队和阻塞栈。java开发必备参考文档。

    史上最全 Java 多线程面试题及答案.docx

    "Java 多线程面试题及答案" 本文总结了 39 个 Java 多线程的问题,并对每个问题进行了详细的解释和分析。以下是从该文件中生成的相关知识点: 1. 多线程的用途 多线程可以发挥多核 CPU 的优势,防止阻塞,和便于...

    1、定义线程,工作:生成10个1--100的随机数,并计算平均数

    1、定义线程,工作:生成10个1--100的随机数,并计算平均数; 2、由于要启动三个线程,最后需要获取三个平均数,再计算平均数,所以需要线程返回值,因此,需要线程实现Callable接口。

    JAVA多线程技术分享-39页PPT(winding)

    分享的多线程技术不是告诉你什么是线程,线程的状态,而是我们在开发中容易踩的坑,受过的伤害。我不会告诉你什么是爱情,但是我会告诉你爱过。 一 基础: 1,Thread.sleep(0)的作用 2,为什么线程会带来性能问题 3...

    java线程学习笔记

    2.3 线程本地存储(Java.lang.ThreadLocal) 15 2.4 线程阻塞 17 2.4.1 调用sleep(millisecond)使任务进入休眠状态 17 2.4.2 等待输出与输入 17 2.4.3 对象锁不可用 17 2.4.4 通过wait()使线程挂起。 17 2.5 线程...

    JavaScript笔记

    [return 返回值] } 注意:js中的方法可以直接写在代码中,不需要“类”包裹 使用方法:方法名()-->方法调用-->立即执行 2.js文件:网页外专门保存js脚本的文件--推荐 强调:HTML、CSS、JS都要使用UTF-8...

    Java诊断利器Arthas排查问题实践.pptx

    Arthas 的主要功能特性包括查看类加载情况、反编译类、热更新类、分析方法调用入参返回值、分析慢调用、找出阻塞线程等。 Arthas 可以帮助开发者快速诊断和解决 Java 应用程序中的问题。 背景: 在生产环境中,...

    Java 基础核心总结-.pdf

    方法可以有参数和返回值,可以重载和重写。 4. 数组和集合:Java 中的数组是一种固定长度的数据结构。集合是指可以存储多个对象的数据结构,例如 ArrayList、LinkedList、HashSet 等。 5. 继承和多态:Java 中的...

    多线程机制

    多线程机制 1 1、 Runnable接口与Thread类 1 2、 两个创建线程方法的比较 3 3、 几个常用的改变线程状态的方法 3 ...9、 Callable 有返回值的线程 20 10、 Callable结合FutureTask的多线程使用(免打扰模式) 24

Global site tag (gtag.js) - Google Analytics