目录
FutureTask案例分析
1.FutureTask代码演示
public class FutureTaskTest {
public static void main(String[] args) throws ExecutionException, InterruptedException {
Task task = new Task();
//测试FutureTask的阻塞获取结果
FutureTask<Integer> integerFutureTask = new FutureTask<>(task);
Thread thread = new Thread(integerFutureTask);
thread.start();
//此处阻塞获取结果
System.out.println(integerFutureTask.get());
System.out.println("执行完成");
}
}
class Task implements Callable<Integer>{
@Override
public Integer call() throws Exception {
Thread.sleep(10000);
return 100;
}
}
2.FutureTask分析
优点:
FutureTask是可以获取返回结果的一个线程任务,不像Runnable没有返回值,纯后端多线程任务
缺点:
FutureTask的缺点也很明显,因为只有当需要同步返回的时候才会使用这个当做一个target,所以必须要等待线程执行完
才能拿到执行结果,并且会阻塞主线程
FutureTask实现异步回调
1.代码自己实现异步回调功能
public class FutureTaskTest {
public