原需求大概如下:
有多个txt英语文本待处理,处理过程为读取文本内容,计算最相似的两个单词的相似度并将结果按照文件原本的顺序将结果写入到一个存放结果的txt文件中。
因为文本数量较多,每个文本处理所需时间不短,所以我考虑使用多线程来提高效率。
话不多说,讲讲我的思路:
首先确定线程数量,因为我电脑四核八线程,所以我就打算用不多于八个线程来处理文本。然后因为线程执行顺序是不定的,执行时间也是不定的,所以我的想法是将这些文本放入一个缓冲区,并对这个缓冲区进行切割,分为个部分,每个部分用一个线程来处理,等待所有线程执行完毕将最终的结果进行总,存入一个txt文本。
话不多说,上核心代码:这是核心代码,用for循环来开辟3三个线程
再看看最终运行控制台输出结果:这是控制台的输出,由于线程的执行时间和顺序不定,所以不是最终效果,但还是能看到每个线程中的内容是有序的
线程执行完毕本地最终结果:
对运行结果的说明:
文本中,被双引号引起来的部分是我文本的原来内容,其中第一个单词是序数词,是我为了标识顺序而写入的。其次就是文件命名纯数字1-100.txt格式,所以直接获取本地所有文件时顺序不是1-100,而是1,10,11,……;2,20,21,……;这种顺序,我没有进行文件排序处理。