java 多线程读取txt_关于Java多线程读取txt文本的一些想法

原需求大概如下:

有多个txt英语文本待处理,处理过程为读取文本内容,计算最相似的两个单词的相似度并将结果按照文件原本的顺序将结果写入到一个存放结果的txt文件中。

因为文本数量较多,每个文本处理所需时间不短,所以我考虑使用多线程来提高效率。

话不多说,讲讲我的思路:

首先确定线程数量,因为我电脑四核八线程,所以我就打算用不多于八个线程来处理文本。然后因为线程执行顺序是不定的,执行时间也是不定的,所以我的想法是将这些文本放入一个缓冲区,并对这个缓冲区进行切割,分为个部分,每个部分用一个线程来处理,等待所有线程执行完毕将最终的结果进行总,存入一个txt文本。

话不多说,上核心代码:0fb467650db5079254f99b91f072d4bf.png这是核心代码,用for循环来开辟3三个线程

再看看最终运行控制台输出结果:716a9d7a870a93f6e29ae056c0bc2613.png这是控制台的输出,由于线程的执行时间和顺序不定,所以不是最终效果,但还是能看到每个线程中的内容是有序的

线程执行完毕本地最终结果:d132e77ef915ec212ab24f2621568674.png

对运行结果的说明:

文本中,被双引号引起来的部分是我文本的原来内容,其中第一个单词是序数词,是我为了标识顺序而写入的。其次就是文件命名纯数字1-100.txt格式,所以直接获取本地所有文件时顺序不是1-100,而是1,10,11,……;2,20,21,……;这种顺序,我没有进行文件排序处理。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值