问个java多线程的问题

loveghl 2011-09-06 05:26:26
大家好,我现在有个非常简单的程序,但是有一些疑问想请大家帮忙解释一下,非常感谢!
我的问题是:现在我有256个独立的输入文件,我要分别读取每个输入文件,然后将其内容拷贝输出到相应的输出文件(所以总共有256个输出文件)。当用单线程串行的做这个工作时,需要244秒,现在我把它改成了4个线程同时去做这个工作,时间要592秒,用8个线程同时去做,时间要980秒,我知道这种IO work是没法用多线程提高效率的,因为只有一个磁头,但是我想请教下大家是什么原因导致线程数目越多时间越久呢?是线程切换开销吗?有没有其他原因,谢谢!这256个文件都是不相关的。
...全文
74 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
loveghl 2011-09-06
  • 打赏
  • 举报
回复
谢谢,我知道这里用多线程没法提升效率,我想知道是什么原因导致线程数目越多时间越久呢?是线程切换开销吗?有没有其他原因,谢谢!
游一游走一走 2011-09-06
  • 打赏
  • 举报
回复
多线,应该只在多CPU环境下,或者出现资源等待(典型的就是IO等待)的情况下才会出现性能提升吧,否则线程上下文的切换只会消耗增加其执行时间
loveghl 2011-09-06
  • 打赏
  • 举报
回复
顶一下
loveghl 2011-09-06
  • 打赏
  • 举报
回复
fr = new FileReader("Nodes/nodes"+p);
bfr = new BufferedReader(fr, bufSize);
fw = new FileWriter("MapsTest/maps"+p);
bfw = new BufferedWriter(fw, bufSize);

while((line = bfr.readLine()) != null){

bfw.write(line);
bfw.newLine();
}
龙四 2011-09-06
  • 打赏
  • 举报
回复
把你读写那段代码发出来

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧