2013-07-10 71 views
0

假設java方法方法A()調用本地方法read()來讀取某些內容。是A()在與read()相同的線程上調用? A()是在JVM的控制下,但不是由系統控制的read()? 當read()得到了一些數據,它怎麼知道數據是A()所請求的,而不是B()C()? JVM如何獲取read()返回的數據?JVM如何獲得本地方法的返回值?

回答

1

通常在JVM中,本地調用通過JNI在同一個線程中執行。在現代JVM中,Java線程被實現爲本地OS線程。當Java方法A調用read()時,它可能會從被管理的切換到本機,但它的行爲與正常的同步函數調用相同。

相關問題