在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写。或者干脆绕过这道坎,走别的路了。现在Java终于有可返回值的任务(也可以叫做线程)了。

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

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

下面是个很简单的例子:

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;  /** * Java线程:线程池-有返回值的线程 */
public class Test {  public static void main(String[] args)throwsExecutionException,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任务返回的内容  

Java线程详解(12)-有返回值的线程相关推荐

  1. java开启线程的方法_Java有几种方法开启线程?怎么实现带有返回值的线程?

    Java有几种方法开启线程?怎么实现带有返回值的线程? 发布时间:2020-05-22 11:20:08 来源:亿速云 阅读:238 作者:Leah Java有几种方法开启线程?怎么实现带有返回值的线 ...

  2. Java线程:新特征-有返回值的线程(转)

    在Java5之前,线程是没有返回值的,常常为了"有"返回值,破费周折,而且代码很不好写.或者干脆绕过这道坎,走别的路了. 现在Java终于有可返回值的任务(也可以叫做线程)了. 可 ...

  3. android任务 进程 线程详解,Android任务、进程、线程详解

    singleTop模式,基本上于standard分歧,仅正在请求的Activity反好位于栈顶时,无所区别.此时,配放成singleTop的Activity,不再会构制新的实例加入到Task栈外,而是 ...

  4. 创建线程以及怎样创建有返回值的线程

    一.继承Thread类创建线程类 (1) 定义一个类并继承Thread,重写run方法,该run方法为该线程需要完成的任务,及线程的执行体. (2) 创建该类的实例对象,及为创建了线程对象. (3) ...

  5. Java线程详解(深度好文)

    Java线程:概念与原理 一.进程与线程         进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,即进程空间或(虚空间).进程不依赖于线程而独立存在,一个进程中可以启动多 ...

  6. Java 多线程详解(五)------线程的声明周期

    Java 多线程详解(一)------概念的引入:https://blog.csdn.net/weixin_39816740/article/details/80089790 Java 多线程详解(二 ...

  7. Java多线程详解(线程不安全案例)

    嗨喽-小伙伴们我又来了, 通过前面两章的学习,我们了解了线程的基本概念和创建线程的四种方式. 附上链接: 1.  Java多线程详解(基本概念)​​​​​​​ 2. Java多线程详解(如何创建线程) ...

  8. Java 多线程详解(三)------线程的同步

    Java 多线程详解(一)------概念的引入:https://blog.csdn.net/weixin_39816740/article/details/80089790 Java 多线程详解(二 ...

  9. Java 多线程详解(二)------如何创建进程和线程

    Java 多线程详解(一)------概念的引入:https://blog.csdn.net/weixin_39816740/article/details/80089790 在上一篇博客中,我们已经 ...

最新文章

  1. Scrum Master如何让敏捷团队正常运转?
  2. RHCE课程-初级部分6、编辑工具VIM,网络配置,进程优先,日志文件简介。
  3. C++ class实现Huffman树(完整代码)
  4. tinkerpop mysql_图论数据库未来的发展方向?
  5. python中多对多替换_Python对指定文件内容进行全局替换
  6. 为什么程序员互相之间不能透露薪水?是怕“凡尔赛”吗?
  7. Linux C多线程编程
  8. WINDOWS下git的安装与使用
  9. matlab和keil下如何查找数组最大值的下标(角标)
  10. linux 用户配额设置,Linux如何设置磁盘配额
  11. 代理服务器的速度慢的原因是什么?
  12. [备忘]Oracle数据库字段缺省值函数-ID值自动填充
  13. aida64使用方法_AIDA64中的详细功能使用步骤介绍
  14. 第一集 DLNA 白話文介紹
  15. android.bp 编译,Android编译系统中的Android.bp
  16. 均值不等式中考_不等式(初三不等式100道带答案)
  17. 安装ROS时遇到的一些坑,做个笔记方便自己查看
  18. mount.cifs手册
  19. 网上流传的手机日入百元的方法
  20. 147 completion机制基本概念

热门文章

  1. 《CCNP SWITCH 300-115认证考试指南》——第1章 企业园区网络的设计
  2. Linux Ubuntu常用命令
  3. ASP.NET中利用DataList实现图片无缝滚动
  4. 网站图像防盗----Apache配置妙法
  5. Mp4v2封装H264+AAC为MP4
  6. Hyperledger Fabric Java SDK最新教程
  7. 【机器学习入门笔记14:BP神经网络基础】20190218
  8. mysql建立电影表_【代码片段】MySQL新建表添加基础字段
  9. spinbox 上下箭头事件_[React] 3 - 自动绑定 (事件绑定)
  10. python将图片转化为字符图