0
假设java方法方法A()
调用本地方法read()
来读取某些内容。是A()
在与read()
相同的线程上调用? A()
是在JVM的控制下,但不是由系统控制的read()
? 当read()
得到了一些数据,它怎么知道数据是A()
所请求的,而不是B()
或C()
? JVM如何获取read()
返回的数据?JVM如何获得本地方法的返回值?
假设java方法方法A()
调用本地方法read()
来读取某些内容。是A()
在与read()
相同的线程上调用? A()
是在JVM的控制下,但不是由系统控制的read()
? 当read()
得到了一些数据,它怎么知道数据是A()
所请求的,而不是B()
或C()
? JVM如何获取read()
返回的数据?JVM如何获得本地方法的返回值?
通常在JVM中,本地调用通过JNI在同一个线程中执行。在现代JVM中,Java线程被实现为本地OS线程。当Java方法A调用read()时,它可能会从被管理的切换到本机,但它的行为与正常的同步函数调用相同。