问题遇到的现象和发生背景
3g的文件,进行读写
我通过多线程操作RandomAccessFile,将一个文件分段去读写文件,每段20mb,一个线程进行处理
然后在使用单线程进行读写文件 ,发现单线程和多线程的速度差不多
然后我去看RandomAccessFile底层代码发现都是native方法
能否告知一下,为啥, RandomAccessFile进行多线程读写和RandomAccessFile进行单线程读写速度一样
3g的文件,进行读写
我通过多线程操作RandomAccessFile,将一个文件分段去读写文件,每段20mb,一个线程进行处理
然后在使用单线程进行读写文件 ,发现单线程和多线程的速度差不多
然后我去看RandomAccessFile底层代码发现都是native方法
能否告知一下,为啥, RandomAccessFile进行多线程读写和RandomAccessFile进行单线程读写速度一样
这个跟你的运行内存有关吧,线程多了,缓存越大,当缓存很大时虽然内存速度快,但是写入到硬盘上速度就降下来了,发生了IO阻塞,所以时候并不是线程越多速度越快;
拿4核八线程来讲,开了16个线程,第一是内存中的缓存增加了,另一个写入到硬盘的速度是有瓶颈的,再加上IO阻塞等,所以1 -8 个线程速度实惠增加一些,但是超过之后速度提升并没有那么明显;