多线程-单核CPU 使用多线程是否可提高效率,为什么?

发布于 2017-04-16 09:25:55 字数 58 浏览 1269 评论 1

其实主要是Java读取大文件比较慢,我想用多线程处理,但又想到是一个硬盘的同个文件,会不会提交效率呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浮生未歇 2017-04-21 20:58:09

第一, java读大文件快慢, 其实瓶颈不在cup上, 而在于硬盘IO速度。 从单核换到双核, 乃至6核,也收效甚微(也会有收效,但远不成正比)。 你把硬盘换成固态硬盘, 立刻效率倍增。

第二, 单线程读文件,一般很难把cpu跑到100%。 多线程有助于提高CPU的利用率。但前文已经说了,CPU不是问题的重点。

第三. 对于普通的硬盘,读速度最快的方式是磁头顺序读。如果你的读方式是顺序读的,那么单线程已经能够发挥它的最大潜能。 如果是随机读的, 那么多线程会有一定的优势。但是速度和线程数远不成正比。

第四。 执行效率这个问题,其实很复杂, 如果你看过很多并行计算的框架(比如hadoop),那就会发现,执行线程数在等于cup核数的时候,已经达到效率最高了, 多于cpu核数并无意义。

第五, 劝你一句,还是想想别的办法吧。 针对你的问题情景,多线程不是一个好办法,徒劳增加代码复杂度

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文