正在回答 回答被采纳积分+1
同学你好
1,多线程不是为了多个线程去抢占运行机会来提高效率;而是为了在同一时间内多个线程同时处理文件来达到效率的提高
2,我们可以让一个线程必须执行完毕来保证文件的有序完整。一个线程在运行过程中如果没有被打断,是靠cpu调度执行时间,不会一直执行到完毕
3,单核CPU上运行的多线程程序, 同一时间只能一个线程在跑, 系统帮你切换线程而已, 系统给每个线程分配时间片来执行, 每个时间片大概10ms左右, 看起来像是同时跑, 但实际上是每个线程跑一点点就换到其它线程继续跑,效率不会有提高的;切换线程反倒会增加开销,所以在单核CPU的情况下,不推荐使用多线程
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
同学你好,可以开启多个线程,将文件分段处理,每个线程处理一段文件。
基本思路如下:
1. 计算出文件总大小
2. 分段处理,计算出每个线程读取文件的开始与结束位置
(文件大小/线程数)*N,N是指第几个线程,这样能得到每个线程在读该文件的大概起始位置
使用"大概起始位置",作为读文件的开始偏移量(fileChannel.position("大概起始位置")),来读取该文件,直到读到第一个换行符,记录下这个换行符的位置,作为该线程的准确起 始位置.同时它也是上一个线程的结束位置。最后一个线程的结束位置也直接设置为-1
3. 启动线程,每个线程从开始位置读取到结束位置为止。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星