开发者社区> 问答> 正文

Thread in native是指什么?

Thread in native是指什么?

展开
收起
1358896759097293 2021-05-04 15:21:53 1847 0
1 条回答
写回答
取消 提交回答
  • 45271990@qq.com

    Thread in native其实是通过JMI接口去执行了 c和c++的一些native的code,在这种状态下,其实在JMI中已经认为它进入了safepoint,即使已经在运行,与前面提到的stop the world好像理解上有点不一样,这时候这个线程其实还是可以一直在运行的,因为如果这个代码是native的code,其实hotstpot是没法知道是什么状态的,而且也没法控制行为,有可能在做一个很长的 Loop,在那里不停的执行,所以这个时候如果要等的话,肯定会出问题safepoint就进不去了,但这时候认为已经是safepoint了,就可以做那些vm operation,因为我的Java线上还在运行,当 native code执行自己的东西的时候,是不会去碰到那些Java内部的那些hip hop object的那些东西,当想访问那些object的时候,需要通过那些JMI的接口,当调用接口的时候,这个时候JVM就会来检查这时候是不是正在做safepoint,如果正在做safepoint,就会把调用给阻塞,然后线程就会被停下来,等vm operation结束了以后再继续执行下去。 所以虽然在Thread in native状态你仍然在运行,但实际上不会造成造成危害,因为要访问那种Java object或者访问hip的时候,这里的JMI接口会挡住。

    2021-05-05 22:51:38
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载