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

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 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题