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

多线程到底能不能加快程序运行速度?
我写了一个文件转换的程序,大概实现功能是这样的:将doc,docx,xls,xlsx,ppt,pptx...等类型文件拖进某个文件夹A,程序自动将所有文件转换成txt格式文件,并存储到另一个文件夹B,然后删除文件夹A中文件。一次性拖入十几二十个文件的话,转换速度还是挺快的,基本上可以实现一拖进去,文件夹A就被清空了。但是如果是几百个文件的话,就需要一定的时间了。我测试了很多次,479个文件完成整个过程大概需要35秒,这太慢了,太让人难受了。然后我就用多线程,但是经测试,并没有加快速度,基本上有用多线程跟没用没什么两样,这让我怀疑多线程到底能不能加快程序运行速度?当然也有可能是我的多线程写错了。如果各位有多线程的代码,请贴出来参考参考,最好多线程的思想是:有两个运算模块,让多线程分配两个线程,每个线程负责运行一个运算模块,并且是同时运行

------解决方案--------------------
磁盘IO的速度在那里了,就算你再多的线程,也绕不过IO瓶颈。
不是说多线程不能提高效率,这个要看你项目的性能瓶颈在哪里。
------解决方案--------------------
多线程写不好的话,可能比单线程还慢!毕竟线程切换需要开销的!楼主的性能瓶颈应该是在磁盘IO上!想办法减少磁盘IO吧!
------解决方案--------------------
引用:
磁盘IO的速度在那里了,就算你再多的线程,也绕不过IO瓶颈。
不是说多线程不能提高效率,这个要看你项目的性能瓶颈在哪里。


是的,多线程是否能提高效率,要看瓶颈在哪里。
------解决方案--------------------
IO密集型,没必要多线程,容易弄巧成拙。
建议Cache,某些文件系统在顺序读或写磁盘时速度相当快,
如果恰好文件是顺序存储在磁盘上的,建议先尽量读进内存,再一次性写出去。

其他什么磁盘内存通道之类的底层技术就不是Java能左右的了。