2011-12-28 66 views
6

此鏈接似乎表明,「它只是工程」(在底部很遠7.3下附加本地線程)http://java.sun.com/docs/books/jni/html/invoke.html如果我使用JNI從C中的多個線程調用java函數會發生什麼?

我看不出這是可能的,是嵌入式JVM將開始自己的自動線程?或者排隊JNI調用?還有什麼可以多次調用同一個虛擬機。我沒有指示做任何線程?

任何我可以想象的工作方式是,如果java代碼將簡單地在與c代碼相同的調用線程中執行。那是對的嗎?這意味着我不必在Java中進行任何線程化。

+0

至於你鏈接的文章,你不必在Java中做任何線程。另一個問題是,如果JVM確實創建了自己的獨立線程,或者只是使用原始線程(儘管如此,我仍在賭博)。 – SJuan76 2011-12-28 10:59:46

回答

4

jvm不必創建自己的線程,方法調用是在生成它們的本機線程上執行的。 AttachCurrentThread和DetachCurrentThread將負責任何必要的jvm內部狀態管理,例如創建包裝本地線程的Java Thread對象。

+0

是的,我剛剛在維基百科上發現:'一旦連接,本地線程就像在本地方法中運行的常規Java線程一樣工作。本地線程保持連接到VM,直到它調用DetachCurrentThread()來分離它自己 – Blub 2011-12-28 18:45:44

0

JVM啓動自己需要運行的線程。您通過啓動JVM來觸發此線程創建。

相關問題