`

从任务中产生返回值

 
阅读更多
Runnable接口不返回任何值,如果希望任务完成时能返回一个值,可以实现Callable接口。
   1.Callable是一个类型参数的接口,类型参数表示从方法call()中的返回值。
   2.运行时必须使用ExecutorService.submit去调用它,例子如下:

public class TaskWithResults implements Callable<String>{

private int id;

public TaskWithResults(int id) {
// TODO Auto-generated constructor stub
this.id=id;
}

@Override
public String call() throws Exception {
// TODO Auto-generated method stub
return "results of TaskWithResults "+id;
}

}

===========================================
public class CallableDemo {


public static void main(String[] args)
{
ExecutorService exec=Executors.newCachedThreadPool();
ArrayList<Future<String>> results=new ArrayList<Future<String>>();
for(int i=0;i<10;i++)
results.add(exec.submit(new TaskWithResults(i)));
for(Future<String> fs:results )
{
try {
System.out.println(fs.get());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally
{
exec.shutdown();
}
}
}

}
分享到:
评论

相关推荐

    操作系统课程设计试验

    操作系统课程设计试验: 当一个进程调用了fork以后,系统会创建一个子进程.这个子进程和父进程不同的地方只有他的进程ID和父进程ID,其他的都是一样。...实验中每产生一次进程调度,输出一个字符作为标识。

    C语言程序设计标准教程

    2. C语言的函数兼有其它语言中的函数和过程两种功能,从这个角度看,又可把函数分为有返回值函数和无返回值函数两种。 (1)有返回值函数  此类函数被调用执行完后将向调用者返回一个执行结果, 称为函数返回值。如...

    python多线程DAY01.txt

    3.多任务编程 * 并行 和 并发 * 进程 线程 4. 多进程编程 时间片 PCB PID 父子进程 优先级 进程特征 进程状态: 就绪态 运行态 等待态 5. ps -aux ps -ajx pstree top nice 6. os.fork() 7. os.getpid() os....

    开源的语法分析工具Another Tool for Language Recognition

    由此,计算机语言的翻译变成了一项普通的任务—在这之前YACC/LEX显得过于学院派,而以LL(k)为基础的ANTLR虽然在效率上还略有不足,但是经过近些年来的升级修改,使得ANTLR足以应付现存的绝大多数应用。感谢Terence...

    linux驱动相关面试题目

    1、字符型驱动设备你是怎么创建设备文件的,就是/dev/下面的设备文件,供上 层应用程序打开使用的文件?...第三:中断服务程序注意返回值,要用操作系统定义的宏做为返回值,而不是自 己定义的 OK,FAIL 之类的。

    mysqlgrammer.g4

    由此,计算机语言的翻译变成了一项普通的任务—在这之前YACC/LEX显得过于学院派,而以LL(k)为基础的ANTLR虽然在效率上还略有不足,但是经过近些年来的升级修改,使得ANTLR足以应付现存的绝大多数应用。感谢Terence...

    ANTLR指南(v3.0)第1~5章WORD版

    由此,计算机语言的翻译变成了一项普通的任务—在这之前YACC/LEX显得过于学院派,而以LL(k)为基础的ANTLR虽然在效率上还略有不足,但是经过近些年来的升级修改,使得ANTLR足以应付现存的绝大多数应用。感谢Terence...

    ANTLR指南(v3.0)第1~5章HTML版

    由此,计算机语言的翻译变成了一项普通的任务—在这之前YACC/LEX显得过于学院派,而以LL(k)为基础的ANTLR虽然在效率上还略有不足,但是经过近些年来的升级修改,使得ANTLR足以应付现存的绝大多数应用。感谢Terence...

    window32 API大全 win32编程

    对话框中可包括用于输入正文、滚动正文、从列表中选择列表项等操作的控制。对话框管理和处理来自这些控制的输入,使应用程序可使用这些信息,来完成所要求的命令操作。 通过使用"资源"可以共享很多有用的数据,比如...

    asynchronous:Rust 中使用线程的异步承诺

    Promise 是表示返回值或函数产生的错误的结构。 它还允许延迟执行并行或串行任务,将结果加入 Promise。 它包括管理事件循环的方法,其中有在后台“发出”事件的任务,它们由承诺收集。 该项目基于 Node JS 和的...

    jobcontrol:作业调度与跟踪库

    跟踪包括存储: - 函数返回值 - 引发的任何异常 - 任务执行期间产生的日志消息 - 可选的“进度”,如果任务支持它 状态存储与主应用程序完全分离。 项目“核心”目前包括两个存储实现: MemoryStorage将所有数据...

    Spring.3.x企业应用开发实战(完整版).part2

    此外,本书重点突出了“实战性”的主题,力求使全书“从实际项目中来,到实际项目中去”。 目录 第1篇 概述 第1章 Spring概述 1.1 认识Spring 1.2 关于SpringSource 1.3 Spring带给我们什么 1.4 Spring体系结构 1.5 ...

    Spring3.x企业应用开发实战(完整版) part1

    此外,本书重点突出了“实战性”的主题,力求使全书“从实际项目中来,到实际项目中去”。 目录 第1篇 概述 第1章 Spring概述 1.1 认识Spring 1.2 关于SpringSource 1.3 Spring带给我们什么 1.4 Spring体系结构 1.5 ...

    java,c/c++,php,c#安全编码规范

    2.2.1 不可忽略方法的返回值 16 2.2.2 不要引用空指针 16 2.2.3 使用Arrays.equals()来比较数组的内容 16 2.3 数字类型和操作 17 2.3.1 防止整数溢出 17 2.3.2 避免除法和取模运算分母为零 18 2.4 类和方法操作 18...

    C#微软培训资料

    18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...

    上海电机学院C语言实训答案

    (8)编写一个程序实现如下功能:从字符串中删除指定的字符。同一字母的大、小写按不同字符处理。 例:若程序执行时,输入字符串为:Shanghai Dianji University,从键盘上输入字符:s,则输出后变为:Shanghai ...

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    9.我们可以看见工程中的所有文件都出现在列表中了。我们可以直接按下下面的 绿色的run 按钮或者按下Ctrl+R 快捷键运行程序。 10.程序运行会出现空白的对话框,如下图。 11.我们双击文件列表的dialog.ui 文件,便出现...

    Node.js中创建和管理外部进程详解

    Node允许你产生进程,并把这个新进程做为它父进程的子进程。在Node里,子进程可以和父进程进行双向通信,而且在某种程度上,父进程还可以监控和管理子进程。 另外一种需要使用子进程的情况是,当你想简单地执行一个...

    VC++6.0核心编程源码.rar

    你可以看到,每个错误都有3种表示法:即一个消息ID(这是你可以在源代码中使用的一个宏,以便与GetLastError的返回值进行比较),消息文本(对错误的英文描述)和一个号码(你应该避免使用这个号码,而应该使用消息...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    成复杂的任务。一个对象的生命期包括三个阶段:创建对象、对象的引用和释放对 象 。 1.8.3 创建对象 创建对象包括声明、实例化和初始化三方面的内容。通常的格式为 : 1. 声明对象 对象声明实际上是给对象命名,也称...

Global site tag (gtag.js) - Google Analytics