java - 使用Parallel Thread对10亿个连续数求和,返回一个单数?

标签 java multithreading

在我的面试中遇到了这个问题。

我的回答是:

  1. 将1b个数分成10组

  2. 使用线程池为每组创建一个线程,共10个

  3. 每个线程汇总通过的组的结果并返回值

  4. 10个线程结束后使用Barrier对所有结果求和,返回最终值

我怀疑这个问题的预期答案是什么? 如果它在单 cpu 下运行(没有多线程模式),单线程应该比多线程快吗?

非常感谢。

最佳答案

也许是一个棘手的问题 - 看看您是否可以跳出给定的框框思考?

如果它们连续,如标题中所述,并且它们以 n 开头,则:

final long BILLION = 1000000000;
long answer = (BILLION * n) + ( BILLION*BILLION + BILLION ) / 2;

这适用于大约 10 亿左右的 n - 之后它会溢出。

不用说,我完全看不出多线程有什么好处!

关于java - 使用Parallel Thread对10亿个连续数求和,返回一个单数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7587676/

相关文章:

java - 找不到 PowerMock 类

java - Spring 中的 ResponseEntity 和 HttpEntity 有什么区别?

android - 实现网络类(class)的最佳选择

c++在派生函数中启动OMP线程

java - 重构 int、long 等

java - 从 XML 文件生成 Java 类

java - 如何在反序列化文档时忽略未使用的 XML 元素?

python - 为什么 multiprocessing.Lock() 不锁定 Python 中的共享资源?

c# - 如何在 C# 中处理/杀死锁定的线程

java - 使用java中的线程将串行程序转换为并行程序?