Java中几种常用的异步工具

几种异步工具的演化

  • new线程, Runnable / Callable
  • 线程池, Executor / ExecutorService + Future / FutureTask
  • ForkJoin, ForkJoinPool
  • CompletableFuture

使用自定义的forkJoinPool运行parallelStream
new ForkJoinPool(16).submit(() -> list.parallelStream())

方法 优点 缺点 适用场景
new线程 线程创建和销毁消耗资源
线程池 降低线程创建和销毁的资源消耗, 统一管理线程
forkjoin 使用worksteal算法, 效率高于普通线程池 数据集大且可拆分, 并行的子集逻辑相对独立, CPU密集
CompletableFuture 链式写法, 支持自定义线程池 多个调用有逻辑依赖关系
RxJava 链式写法, 性能比CompletableFuture高, 支持back_pressure 学习成本高

发现了个很奇怪的现象,关于 parallelStream 的 - V2EX

java.util.concurrent | hahahaha123567’s Blog

来,带你鸟瞰 Java 中的并发框架!