多线程开发

Executor ExecutorService ThreadPoolExecutor Executors

  • Executor 比较简单,只有一个execute回调接口;
  • ExecutorService则比较丰富,提供了对线程池的管理;
  • ThreadPoolExecutor是ExecutorService的具体实现,
  • Executors是工具类,对ThreadPoolExecutor做了一些简单的包装

Future 和FutureTask

  • 它是个接口。ThreadPoolExecutor的submit方法返回的就是一个Future的实现,这个实现就是FutureTask的一个具体实例。

  • FutureTask是Futrue的具体实现类。FutureTask除了帮助ThreadPool很好的实现了对加入线程池任务的Future支持外,也为我们提供了很大的便利,使得我们自己也可以实现支持Future的任务调度。
    ExecutorService executor = Executors.newFixedThreadPool(5);
    FutureTask<List> futureTask = new FutureTask<List>(()-> {
    @Override
    public List call() throws Exception {
    return "hello";
    }
    });
    executor .submit(futureTask);
    futureTask.get();

CompletableFuture的加入丰富了future的功能。

可以将线程原子化,然后进行排列组合或者流式处理,因此可操作性更强。

推荐阅读更多精彩内容