gpt4 book ai didi

java - Java 中的多线程处理

转载 作者:行者123 更新时间:2023-11-30 04:48:01 25 4
gpt4 key购买 nike

我在解决这个问题时遇到了一些问题。任何帮助将不胜感激。

程序必须读取一个文本文件,在其中计算每个输入数字的除数之和。例如,数字 20 的总和为 1+2+4+5+10=22。然后将这些总和逐行相加。对于上面的每一个总和,然后找到除数,最后将它们相加。

例如初始文件1 2 4 6 15 20

25 50 100 125 250 500

16 8 3

然后计算除数之和。

1 1 3 6 9 22

6 43 117 31 218 592

15 7 1

逐行总结

42

1007

23

然后计算上述总和。

54

73

1

然后终于合计并返回。

128

我需要通过线程池完成每个新行来完成该过程。

我的逻辑如下。

              5.2. For each input line (Add each line to an ArrayBlockingQueue, 
Then add each item in the Queue to an ExecutorService Which will run the follow)

5.2.1. Parse the current input line into integers

5.2.2. For each integer in the current input line

5.2.2.1. Compute the sum-of-divisors of this integer

5.2.2.2. Add this to the cumulated sum-of-divisors

5.2.3. Compute the sum-of-divisors of this cumulated sum

5.2.4. Add this to the grand total

我在 5.2 之后陷入困境,我是创建一个实现可运行接口(interface)的新类,然后将累积和添加到一个atomicArray中,还是最好创建一个实现可调用接口(interface)的类,然后让它返回累计金额?或者有没有完全不同的方法。

这是我到目前为止所得到的,它返回所需的结果,但按顺序返回。

http://pastebin.com/AyB58fpr

最佳答案

使用

java.util.concurrent.Future

和一个

java.util.concurrent.Executors.newFixedThreadPool(int nThreads)

这真的很容易做到。

关注Oracle tutorial如果您不熟悉执行器。

关于java - Java 中的多线程处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10512049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com