上一篇:内存溢出(OOM)故障排查—JProfiler
不知道大家在学习线程的时候有没有注意到Thread
这个类中有下面这样一些代码:
大家如果看了Thread
类的源码的时候就会发现,Thread就是一个普通的class类,
为什么在这个类中可以定义一个类似于接口的方法呢?
我们自己来定义一个这样的方法就会报错:
如果我们加上native
关键字的话,情况就不一样了:
加上native
关键字的时候,就不会再报错了。
1.native关键字的作用?
Native
关键字是java编程语言用来调用底层C语言库的。
虽然现在Java语言非常火,但是最开始是C/C++的天下,后来java吸收了一些好的东西,摒弃了一些不好的东西,逐渐开始走红。也就是说,java底层还是会有一些C/C++(jvm就是C++实现的)的东西,此时java如果想要去调用这些不是java语言实现的代码时就需要使用到Native
关键字。
简而言之,使用native
关键字修饰的方法表示此方法不是由java实现的,所以在java中看不到这个方法具体是怎么实现的。
在之前的一篇文章:
JVM(一)—基础概念
里面有一张jvm的概况图:
上图中的Native Method Interface
会和JVM进行交互,说白了就是java代码会调用java的底层方法,这也就是我们常说的JNI(Java Native Interface)
。