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

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日

悬赏问题

  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同