Java虚拟机中native方法和Java方法互相调用的机制如何实现?
假设要用Java语言实现一个虚拟机,现在讨论有关程序运行模块。
在Java虚拟机中,是当从Java方法中调用native方法是较易实现的;但虚拟机如何识别出一条线程在native方法中调用了一个Java方法?
例如,在Thread类中,start()方法是Java方法;run()方法也是Java方法,start0()方法是私有的native方法。这3个方法的调用次序如下:
start()——>start0()——>run()
由于start0()方法是native方法,无法跟踪其运行代码,那么如何得知它会在什么时候调用run()方法呢?