Callable的使用
2015-07-24 09:58
309 查看
runnable使用的时候不能返回任何值 如果希望运行完返回结果可以使用Callable
下面是Callable的例子
class TaskWithResult implements Callable<String>{
private int id;
public TaskWithResult(int id) {
this.id = id;
}
@Override
public String call() throws Exception {
// TODO Auto-generated method stub
return "result of TaskWithResult " + id;
}
}
public class CallableDemo {
public static void main(String[] args){
ExecutorService exec = Executors.newCachedThreadPool();
ArrayList<Future<String>> result = new ArrayList<Future<String>>();
for(int i = 0; i < 10; i++)
result.add(exec.submit(new TaskWithResult(i)));
for(Future<String> fs : result)
try {
System.out.println(fs.get());
} catch (InterruptedException e) {
System.out.println(e);
return;
} catch (ExecutionException e) {
System.out.println(e);
return;
}finally{
exec.shutdown();
}
}
}
结果是:
result of TaskWithResult 0
result of TaskWithResult 1
result of TaskWithResult 2
result of TaskWithResult 3
result of TaskWithResult 4
result of TaskWithResult 5
result of TaskWithResult 6
result of TaskWithResult 7
result of TaskWithResult 8
result of TaskWithResult 9
下面是Callable的例子
class TaskWithResult implements Callable<String>{
private int id;
public TaskWithResult(int id) {
this.id = id;
}
@Override
public String call() throws Exception {
// TODO Auto-generated method stub
return "result of TaskWithResult " + id;
}
}
public class CallableDemo {
public static void main(String[] args){
ExecutorService exec = Executors.newCachedThreadPool();
ArrayList<Future<String>> result = new ArrayList<Future<String>>();
for(int i = 0; i < 10; i++)
result.add(exec.submit(new TaskWithResult(i)));
for(Future<String> fs : result)
try {
System.out.println(fs.get());
} catch (InterruptedException e) {
System.out.println(e);
return;
} catch (ExecutionException e) {
System.out.println(e);
return;
}finally{
exec.shutdown();
}
}
}
结果是:
result of TaskWithResult 0
result of TaskWithResult 1
result of TaskWithResult 2
result of TaskWithResult 3
result of TaskWithResult 4
result of TaskWithResult 5
result of TaskWithResult 6
result of TaskWithResult 7
result of TaskWithResult 8
result of TaskWithResult 9
相关文章推荐
- 南阳oj 数据结构 题目739 笨蛋难题四
- Java 动态代理机制分析及扩展,第 1 部分
- n皇后问题
- 目标检测程序开发(三)——级联分类器训练
- 决策树算法(matlab)
- linux下解压命令大全
- 【MySQL学习】MySQL PHP 语法
- leetCode(49):Count Primes
- 【SQL语句】 - Ctrl+3 查询表属性的存储过程
- leetCode(49):Count Primes 分类: leetCode 2015-07-24 09:58 117人阅读 评论(0) 收藏
- c++ 语法
- 在eclipse上以link方式安装CDT插件
- JAVA—Day01
- #1070 : RMQ问题再临
- FineReport制作可动态展开的组织递归树报表
- 图像分析------连通组件标记算法
- 图像分析------连通组件标记算法
- 跨平台移动开发实战一
- 数字图像处理入门(一)-基本概念
- C++ STL区间前闭后开的好处