开发者社区> 问答> 正文

java在单核cpu下的多线程处理文件能否提高效率?:报错

http://tutorials.jenkov.com/java-concurrency/benefits.html

这个页面讲到一个例子,处理A、B两个文件,读取分别要5秒,处理分别要2秒。如果只用一个线程处理需要14秒。


5 seconds reading file A
  2 seconds processing file A
  5 seconds reading file B
  2 seconds processing file B
-----------------------
 14 seconds total


如果先读取一个文件A,处理A的同时另一个线程读取文件B,然后处理B。需要12秒。

5 seconds reading file A
  5 seconds reading file B + 2 seconds processing file A
  2 seconds processing file B
-----------------------
 12 seconds total
下面多线程的处理方式在单个(单核)cpu的机器上能实现吗,多谢了?

(因为记得好像是在读取文件的过程中是不需要cpu资源的,所以在处理A的同时读取B也进行了2秒。我觉得上面是可以实现的,但是不知道有没有记错,不太确定。)



展开
收起
kun坤 2020-06-07 13:58:54 850 0
1 条回答
写回答
取消 提交回答
  • 这个吧,尝试复用IO吧,将文件IO设置为非阻塞的然后加到复用方法中去,可能可以解决读阻塞的问题,多线程也行,读阻塞了会自动切换到另外线程。######好像是因为dma,cpu分配资源之后,不用管读取了,用多线程可以,不过是并发,不是并行######@徐航 并行是同一时刻在执行,并发是伪并行,是看时间段的,一般说的是cpu的调度,但是你说的那种情况,用多线程后传输和下次调度是同时执行的,只是大家都在说调度,你的思考点不一样######谢谢指正。请问在CPU分配资源后,DMA传输和CPU处理为什么不能并行?######文件处理(日志)单CPU多线程会降低性能. 

    2020-06-07 13:58:58
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
多IO线程优化版 立即下载