如果希望调用的线程不但能执行指定的任务,还想有返回值,这时我们就可以使用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) |