jdk的native源码hotspot 学习姿势

1.在这个 http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/00cd9dc3c2b5/src/share/native/java/lang/Thread.c
在这里插入图片描述
在上面链接里面查看对应的native 本地方法所对应 的hotspot虚拟机的源码
如上面贴出的就是 Thread相关的 本地方法,如sleep的源码,则需要
搜索 方法名 JVM_Sleep 这个名字 在hotspot中的 jvm.cpp文件中。
这里应该先用工具如 everyThing 搜索 jvm.cpp 文件,后再此文件 用sublime 打开后搜索
大写的 JVM_Sleep
在这里插入图片描述
可以看到其调用了 Thread的 is_interrupted 函数,
所以从sleep函数内部调用可以知道,如果此时外部有调用线程中断interrupte ,即此时sleep判断中断标注会是true成立后, 会抛出异常 InterruptedException!
所以再调用sleep,wait等线程阻塞的方法时候,都有显示的捕获异常

后,再搜索Thread.cpp 文件中的 is_interrupted 如下:
在这里插入图片描述
再搜索 操作平台 的如os_linux.cpp中 的 is_interrupted 如下:
在这里插入图片描述
可以看到,他是会对中断标志复位操作!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值