package com.futrue;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.FutureTask;
/*
* 执行一个线程,获得线程的返回值
*/
public class FutureDemo {
public static void main(String[] args) {
//线程池方法,线程池实际上也是一个线程
ExecutorService service = Executors.newCachedThreadPool();
FutureTask<String> task = new FutureTask<String>(new Callable<String>() {
@Override
public String call() throws Exception {
return Thread.currentThread().getName();
}
});
service.execute(task);
try {
String res = task.get();
System.out.println("res = "+res);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
service.shutdown();
}
}
运行结果:
res = pool-1-thread-1