Chinaunix首页 | 论坛 | 博客
  • 博客访问: 154459
  • 博文数量: 15
  • 博客积分: 2061
  • 博客等级: 大尉
  • 技术积分: 395
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-06 14:25
文章分类

全部博文(15)

文章存档

2020年(1)

2012年(1)

2009年(7)

2008年(6)

我的朋友

分类: Java

2009-01-19 23:37:48

如果希望调用的线程不但能执行指定的任务,还想有返回值,这时我们就可以使用Callable与Future接口来实现。至于它的方法可以去查找相关API。下面来看一个例子:
package wyf.jc;
import java.util.concurrent.*;
//实现了Callable接口的任务类
class MyCallableImpl implements Callable{
String taskName;
public MyCallableImpl(String taskName){
  this.taskName=taskName;
}
//存放任务代码的run
public Object call(){
  System.out.println(taskName+"任务成功执行!");
  return "恭喜你,任务成功执行,我是返回消息";
}
}
public class sample17_6 {
/**
  * @param args
  */
public static void main(String[] args) {
  //创建线程
  ExecutorService threadPool=Executors.newSingleThreadExecutor();
  //调用线程池的submit方法执行任务
  Future future=threadPool.submit(new MyCallableImpl("taskA"));
  try{
   //调用阻塞方法get获取任务的返回值
   System.out.println(future.get());
  }catch(Exception ex){
   ex.printStackTrace();
  }
  threadPool.shutdown();
}
}
运行结果如下:
taskA任务成功执行!
恭喜你,任务成功执行,我是返回消息

从结果中可以看出,这个线程不但执行了任务代码,还带了返回值。
阅读(1446) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~