在Java之前线程是没有返回值的常常为了有返回值破费周折而且代码很不好写或者干脆绕过这道坎走别的路了
现在Java终于有可返回值的任务(也可以叫做线程)了
可返回值的任务必须实现Callable接口类似的无返回值的任务必须Runnable接口
执行Callable任务后可以获取一个Future的对象在该对象上调用get就可以获取到Callable任务返回的Object了
下面是个很简单的例子
import ncurrent*;
/**
* Java线程有返回值的线程
*
* @author Administrator ::
*/
public class Test {
public static void main(String[] args) throws ExecutionException InterruptedException {
//创建一个线程池
ExecutorService pool = ExecutorsnewFixedThreadPool();
//创建两个有返回值的任务
Callable c = new MyCallable(A);
Callable c = new MyCallable(B);
//执行任务并获取Future对象
Future f = poolsubmit(c);
Future f = poolsubmit(c);
//从Future对象上获取任务的返回值并输出到控制台
Systemoutprintln(>>>+fget()toString());
Systemoutprintln(>>>+fget()toString());
//关闭线程池
poolshutdown();
}
}
class MyCallable implements Callable{
private String oid;
MyCallable(String oid) {
thisoid = oid;
}
@Override
public Object call() throws Exception {
return oid+任务返回的内容;
}
}
>>>A任务返回的内容
>>>B任务返回的内容
Process finished with exit code
非常的简单要深入了解还需要看Callable和Future接口的API啊
本文出自 熔 巖 博客请务必保留此出处