多线程-单核CPU 使用多线程是否可提高效率,为什么?
其实主要是Java读取大文件比较慢,我想用多线程处理,但又想到是一个硬盘的同个文件,会不会提交效率呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
其实主要是Java读取大文件比较慢,我想用多线程处理,但又想到是一个硬盘的同个文件,会不会提交效率呢?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
第一, java读大文件快慢, 其实瓶颈不在cup上, 而在于硬盘IO速度。 从单核换到双核, 乃至6核,也收效甚微(也会有收效,但远不成正比)。 你把硬盘换成固态硬盘, 立刻效率倍增。
第二, 单线程读文件,一般很难把cpu跑到100%。 多线程有助于提高CPU的利用率。但前文已经说了,CPU不是问题的重点。
第三. 对于普通的硬盘,读速度最快的方式是磁头顺序读。如果你的读方式是顺序读的,那么单线程已经能够发挥它的最大潜能。 如果是随机读的, 那么多线程会有一定的优势。但是速度和线程数远不成正比。
第四。 执行效率这个问题,其实很复杂, 如果你看过很多并行计算的框架(比如hadoop),那就会发现,执行线程数在等于cup核数的时候,已经达到效率最高了, 多于cpu核数并无意义。
第五, 劝你一句,还是想想别的办法吧。 针对你的问题情景,多线程不是一个好办法,徒劳增加代码复杂度