java stream api中,集合通过stream()创建串行流、parallelstream()创建并行流;串行流单线程顺序执行,适合小数据或强依赖场景;并行流基于forkjoinpool多线程处理,适合无状态大数据计算,但小数据或含副作用时反而低效。

Java Stream API 通过集合创建流最直接的方式就是调用集合对象自带的两个方法:stream() 创建串行流,parallelStream() 创建并行流。这两个方法定义在 Collection 接口里,所以所有标准集合(如 ArrayList、LinkedList、HashSet 等)都支持。
从 List 创建串行流
串行流按元素顺序逐个处理,适合逻辑依赖强、数据量不大或需保证执行顺序的场景。
- 调用
list.stream()即可获得一个串行流 - 底层不开启多线程,执行是单线程、确定性顺序
- 示例:List
list = Arrays.asList("a", "b", "c"); Stream s = list.stream();
从 List 创建并行流
并行流自动将数据拆分、多线程处理,适合计算密集型、无状态、可分割的大数据集。
- 调用
list.parallelStream()获取并行流 - 底层基于
ForkJoinPool.commonPool(),默认使用 CPU 核心数 -1 个线程 - 注意:不是所有操作都适合并行——比如含副作用(修改外部变量)、依赖顺序(如
findFirst)、或 I/O 操作时,并行反而可能出错或变慢 - 示例:Stream
p = Arrays.asList(1, 2, 3, 4, 5).parallelStream();
关键细节提醒
- 串行流和并行流可以互相切换:
stream().parallel()可转为并行;parallelStream().sequential()可切回串行 - 流一旦开始执行终止操作(如
collect()、forEach()),就不能再复用,也不影响原集合 - 并行 ≠ 更快。小集合(比如几十个元素)用并行流往往因线程开销反而更慢
- 若需自定义线程池,不能直接用
parallelStream(),得用ForkJoinPool提交任务,再配合stream().parallel()设置运行环境
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











