在 java 中,函数式编程通过并发流实现并行计算,而多线程则通过显式线程创建实现。 并行计算用于操作大数据集,具有高并发性和自动同步,性能较高,适用于任务特定的并行计算。 多线程用于管理单个任务,并发性低,需要手动同步,性能依赖于具体任务。

Java 函数式编程的并行计算与多线程比较
函数式编程通过使用不可变数据和纯粹函数来强调代码的简洁性和可维护性。Java 8 引入了 Lambda 表达式和流 API,使函数式编程成为现实。
并行计算
立即学习“Java免费学习笔记(深入)”;
Java 为并行计算提供了以下工具:
- 并行流(ParallelStream): 用于批量处理大数据集。
- Fork/Join 框架: 用于并行计算分解的任务。
- 并发库: 用于创建和管理线程。
多线程
多线程允许一个程序并发执行多个任务。在 Java 中,可以使用以下类实现多线程:
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
- Thread: 表示一个线程。
- Runnable: 定义要由线程执行的代码。
比较
并行计算和多线程在某些方面存在相似之处,但也有明显的区别:
| 特征 | 并行计算 | 多线程 |
|---|---|---|
| 操作 | 操作大数据集 | 管理单个任务 |
| 并发性 | 高度并发 | 低度并发 |
| 创建 | 容易创建 | 需要显式线程创建 |
| 同步 | 自动同步 | 需要手动同步 |
| 性能 | 一般性能较高 | 任务特定性能较高 |
实战案例
假设我们有一个包含 100 万个元素的大列表,我们需要计算每个元素的平方。
并行计算:
List<Integer> numbers = new ArrayList<>();
for (int i = 0; i < 1000000; i++) {
numbers.add(i);
}
long startTime = System.currentTimeMillis();
List<Integer> squares = numbers.parallelStream()
.map(n -> n * n)
.collect(Collectors.toList());
long endTime = System.currentTimeMillis();
System.out.println("Parallel processing took: " + (endTime - startTime) + " ms");多线程:
List<Integer> numbers = new ArrayList<>();
for (int i = 0; i < 1000000; i++) {
numbers.add(i);
}
long startTime = System.currentTimeMillis();
List<Integer> squares = new ArrayList<>();
int numThreads = 4;
Thread[] threads = new Thread[numThreads];
for (int i = 0; i < numThreads; i++) {
threads[i] = new Thread(() -> {
List<Integer> partialSquares = new ArrayList<>();
for (int j = i; j < numbers.size(); j += numThreads) {
partialSquares.add(numbers.get(j) * numbers.get(j));
}
synchronized (squares) {
squares.addAll(partialSquares);
}
});
}
for (Thread thread : threads) {
thread.start();
}
for (Thread thread : threads) {
thread.join();
}
long endTime = System.currentTimeMillis();
System.out.println("Multi-threaded processing took: " + (endTime - startTime) + " ms");在这种情况下,并行处理比多线程处理要快得多,因为流 API 能够高效地并行处理大数据集。

















