1:使用
package com.huiguan.facade.mobile;
import java.util.concurrent.*;
/**
* @author chengwei
* @since $$Revision:1.0.0, $$Date: 2018/4/26 11:39 $$
*/
public class FutureDemo {
public static void main(String[] args) {
try {
//创建线程池,此线程池创建为非推荐方式
ExecutorService threadPool = Executors.newCachedThreadPool();
//task是线程
Task task = new Task();
FutureTask<String> futureTask = new FutureTask<String>(task);
//submit运行有返回值的线程,execute运行无返回值的线程
threadPool.submit(futureTask);
//get方法会阻塞,直到task线程运行结束,才会获取返回值
String s = futureTask.get();
System.out.println(s);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}
package com.huiguan.facade.mobile;
import java.util.concurrent.Callable;
/**
* @author chengwei
* @since $$Revision:1.0.0, $$Date: 2018/4/26 11:39 $$
*/
public class Task implements Callable {
@Override
public String call() throws Exception {
//线程休眠1s,方便观察FutureTask.get的阻塞现象
Thread.sleep(1000);
return "qqqqqqq";
}
}package com.huiguan.facade.mobile