假设java方法方法A()
调用本机方法read()
来读取内容。 A()
在与read()
相同的线程上调用了吗?
A()
在JVM的控制之下,但不是read()
由系统控制?
当read()
获得一些数据时,如何知道数据是A()
而非B()
或C()
请求的? JVM如何获取read()
?
答案 0 :(得分:1)
通常在JVM中,本机调用是通过同一线程中的JNI执行的。在现代JVM中,Java线程实现为本机OS线程。当Java方法A调用read()时,它可以从托管切换到 native ,但它的行为与正常的同步函数调用一样。