胡安民 2022-05-04 10:33 采纳率: 50%
浏览 65
已结题

java的native方法是线程安全的吗

问题遇到的现象和发生背景

3g的文件,进行读写

我通过多线程操作RandomAccessFile,将一个文件分段去读写文件,每段20mb,一个线程进行处理

然后在使用单线程进行读写文件 ,发现单线程和多线程的速度差不多

然后我去看RandomAccessFile底层代码发现都是native方法

能否告知一下,为啥, RandomAccessFile进行多线程读写和RandomAccessFile进行单线程读写速度一样

  • 写回答

1条回答 默认 最新

  • CodeMartain 2022-05-04 12:18
    关注

    这个跟你的运行内存有关吧,线程多了,缓存越大,当缓存很大时虽然内存速度快,但是写入到硬盘上速度就降下来了,发生了IO阻塞,所以时候并不是线程越多速度越快;
    拿4核八线程来讲,开了16个线程,第一是内存中的缓存增加了,另一个写入到硬盘的速度是有瓶颈的,再加上IO阻塞等,所以1 -8 个线程速度实惠增加一些,但是超过之后速度提升并没有那么明显;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月12日
  • 已采纳回答 5月4日
  • 创建了问题 5月4日