【发布时间】:2015-12-21 12:16:45
【问题描述】:
所以我之前没有真正做过任何认真的多线程处理(除了典型的 for-loop 教科书示例),所以我想我可以尝试一下。我要完成的任务如下:
- 从名为
ids.txt的文件中读取识别码 - 在名为
sequence.txt的单独文件中搜索该识别码 - 找到标识后,提取 id 后面的字符串。
- 创建一个
DataSequence类型的对象(封装了识别码和提取的序列)并将其添加到一个ArrayList中。 - 重复 3000 多个 ID。
我已经在单个线程中尝试过这种“常规”方式,但过程太慢了。如何以多线程方式解决这个问题?
【问题讨论】:
-
你能告诉我们一些你尝试过的代码吗?我们不能只给你答案,我们必须向你展示它是如何工作的。
-
这些文件有多大?是否可以将它们加载到内存中(尤其是
sequence.txt)?无论如何,我强烈建议您在尝试将多线程作为解决方案之前,对您的代码进行概要分析,以准确了解时间的去向。如果你要走这条路,那么你绝对应该将线程数限制在合理的范围内(例如,8 或 16)。 -
我所拥有的只是带有 for 循环的常规单线程方法。够了吗?
-
@TedHopp 'sequence.txt' 为 53.3 MB。 “ids.txt”为 6.57 KB。虽然,其他方法可能是可能的,但我也有兴趣在这里学习多线程。
-
你想出这个任务是为了学习如何使用线程,还是仅仅解决问题更重要?我有一种感觉,大多数人会继续建议做多线程以外的事情来解决这个特定问题。另一方面,可以想出一个不同的练习,其中多线程带来的性能提升会更加明显。
标签: java multithreading file io