Future和Callable的关系

Runnable的缺陷

不能返回一个返回值
也不能抛出Checked Exception

Callable接口

类似于Runnable,被其他线程执行的任务
实现call方法
有返回值

Future

作用

可以执行异步子任务

方法

get方法

截屏2020-02-16下午8.46.26.png
截屏2020-02-16下午8.46.59 1.png

cancel方法

取消任务的执行
截屏2020-02-17下午2.24.51.png

截屏2020-02-17下午2.25.58.png

isDone方法

判断线程是否执行完毕

isCancelled方法

判断是否被取消

demo

  1. /**
  2. * 描述: 演示一个Future的使用方法
  3. */
  4. public class OneFuture {
  5. public static void main(String[] args) {
  6. ExecutorService service = Executors.newFixedThreadPool(10);
  7. Future<Integer> future = service.submit(new CallableTask());
  8. try {
  9. System.out.println(future.get());
  10. } catch (InterruptedException e) {
  11. e.printStackTrace();
  12. } catch (ExecutionException e) {
  13. e.printStackTrace();
  14. }
  15. service.shutdown();
  16. }
  17. static class CallableTask implements Callable<Integer> {
  18. @Override
  19. public Integer call() throws Exception {
  20. Thread.sleep(3000);
  21. return new Random().nextInt();
  22. }
  23. }
  24. }

Callable和Future的关系

截屏2020-02-16下午8.42.56.png

FutureTask

截屏2020-02-17下午3.36.30.png

截屏2020-02-17下午3.37.52.png