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()時,它可能會從被管理的切換到本機,但它的行爲與正常的同步函數調用相同。