在我的面试中遇到了这个问题。
我的回答是:
将1b个数分成10组
使用线程池为每组创建一个线程,共10个
每个线程汇总通过的组的结果并返回值
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/