日期:2014-05-20  浏览次数:20755 次

问个java多线程的问题
大家好,我现在有个非常简单的程序,但是有一些疑问想请大家帮忙解释一下,非常感谢!
我的问题是:现在我有256个独立的输入文件,我要分别读取每个输入文件,然后将其内容拷贝输出到相应的输出文件(所以总共有256个输出文件)。当用单线程串行的做这个工作时,需要244秒,现在我把它改成了4个线程同时去做这个工作,时间要592秒,用8个线程同时去做,时间要980秒,我知道这种IO work是没法用多线程提高效率的,因为只有一个磁头,但是我想请教下大家是什么原因导致线程数目越多时间越久呢?是线程切换开销吗?有没有其他原因,谢谢!这256个文件都是不相关的。

------解决方案--------------------
多线,应该只在多CPU环境下,或者出现资源等待(典型的就是IO等待)的情况下才会出现性能提升吧,否则线程上下文的切换只会消耗增加其执行时间