文章目录
interrupt()源码分析
- interrupt()源码分析
- 分析native代码的方法
根据源码 , 可以看到 interrupt()源码的核心为interrupt0()
方法 可以看到其
interrupt()
方法为native方法
如下的链接为openjdk的源码地址 https://github.com/openjdk-mirror/jdk7u-jdk
点击此处的go to file可以查找对应的类
此次分析的是Thread类的代码, 因此是查找Thread.c
根据如下的Thread.c的源码, 可以看到interrupt0对应的是JVM_Interrupt
{"interrupt0", "()V", (void *)&JVM_Interrupt},
接着在如下的hotspot的源代码仓库中, 搜索
JVM_Interrupt
https://github.com/openjdk-mirror/jdk7u-hotspot
根据搜索出来的结果, 打开
jvm.cpp
可以看到调用的是
Thread::interrupt(thr);
这个方法 根据thread.cpp的代码, 可以看到其调用的是os::interrupt 去中断线程
os::interrupt
的代码截取如下. 图片右侧为对于加粗的关键代码的解读