2011-12-28 62 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来触发此线程创建。

相关问题