Java线程详解(12)-有返回值的线程
在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)-有返回值的线程相关推荐
- java开启线程的方法_Java有几种方法开启线程?怎么实现带有返回值的线程?
Java有几种方法开启线程?怎么实现带有返回值的线程? 发布时间:2020-05-22 11:20:08 来源:亿速云 阅读:238 作者:Leah Java有几种方法开启线程?怎么实现带有返回值的线 ...
- Java线程:新特征-有返回值的线程(转)
在Java5之前,线程是没有返回值的,常常为了"有"返回值,破费周折,而且代码很不好写.或者干脆绕过这道坎,走别的路了. 现在Java终于有可返回值的任务(也可以叫做线程)了. 可 ...
- android任务 进程 线程详解,Android任务、进程、线程详解
singleTop模式,基本上于standard分歧,仅正在请求的Activity反好位于栈顶时,无所区别.此时,配放成singleTop的Activity,不再会构制新的实例加入到Task栈外,而是 ...
- 创建线程以及怎样创建有返回值的线程
一.继承Thread类创建线程类 (1) 定义一个类并继承Thread,重写run方法,该run方法为该线程需要完成的任务,及线程的执行体. (2) 创建该类的实例对象,及为创建了线程对象. (3) ...
- Java线程详解(深度好文)
Java线程:概念与原理 一.进程与线程 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,即进程空间或(虚空间).进程不依赖于线程而独立存在,一个进程中可以启动多 ...
- Java 多线程详解(五)------线程的声明周期
Java 多线程详解(一)------概念的引入:https://blog.csdn.net/weixin_39816740/article/details/80089790 Java 多线程详解(二 ...
- Java多线程详解(线程不安全案例)
嗨喽-小伙伴们我又来了, 通过前面两章的学习,我们了解了线程的基本概念和创建线程的四种方式. 附上链接: 1. Java多线程详解(基本概念) 2. Java多线程详解(如何创建线程) ...
- Java 多线程详解(三)------线程的同步
Java 多线程详解(一)------概念的引入:https://blog.csdn.net/weixin_39816740/article/details/80089790 Java 多线程详解(二 ...
- Java 多线程详解(二)------如何创建进程和线程
Java 多线程详解(一)------概念的引入:https://blog.csdn.net/weixin_39816740/article/details/80089790 在上一篇博客中,我们已经 ...
最新文章
- Scrum Master如何让敏捷团队正常运转?
- RHCE课程-初级部分6、编辑工具VIM,网络配置,进程优先,日志文件简介。
- C++ class实现Huffman树(完整代码)
- tinkerpop mysql_图论数据库未来的发展方向?
- python中多对多替换_Python对指定文件内容进行全局替换
- 为什么程序员互相之间不能透露薪水?是怕“凡尔赛”吗?
- Linux C多线程编程
- WINDOWS下git的安装与使用
- matlab和keil下如何查找数组最大值的下标(角标)
- linux 用户配额设置,Linux如何设置磁盘配额
- 代理服务器的速度慢的原因是什么?
- [备忘]Oracle数据库字段缺省值函数-ID值自动填充
- aida64使用方法_AIDA64中的详细功能使用步骤介绍
- 第一集 DLNA 白話文介紹
- android.bp 编译,Android编译系统中的Android.bp
- 均值不等式中考_不等式(初三不等式100道带答案)
- 安装ROS时遇到的一些坑,做个笔记方便自己查看
- mount.cifs手册
- 网上流传的手机日入百元的方法
- 147 completion机制基本概念
热门文章
- 《CCNP SWITCH 300-115认证考试指南》——第1章 企业园区网络的设计
- Linux Ubuntu常用命令
- ASP.NET中利用DataList实现图片无缝滚动
- 网站图像防盗----Apache配置妙法
- Mp4v2封装H264+AAC为MP4
- Hyperledger Fabric Java SDK最新教程
- 【机器学习入门笔记14:BP神经网络基础】20190218
- mysql建立电影表_【代码片段】MySQL新建表添加基础字段
- spinbox 上下箭头事件_[React] 3 - 自动绑定 (事件绑定)
- python将图片转化为字符图