Что произойдет, если я вызову функцию Java из нескольких потоков из C с JNI? - PullRequest
6 голосов
/ 28 декабря 2011

Эта ссылка, по-видимому, говорит о том, что "это просто работает": (довольно далеко внизу в разделе 7.3 Присоединение собственных потоков) http://java.sun.com/docs/books/jni/html/invoke.html

Я не понимаю, как это возможно, это встроенная JVMСобираетесь запускать свои собственные потоки автоматически?Или очередь звонков JNI?Как еще может быть несколько звонков на одну и ту же виртуальную машину.который я не поручил делать какие-либо потоки?

Любой способ, которым я могу себе представить, это работать, если код Java будет просто выполняться в том же вызывающем потоке, что и код c.Это верно?Это означало бы, что мне не нужно выполнять какие-либо потоки в Java.

Ответы [ 2 ]

4 голосов
/ 28 декабря 2011

JVM не должен создавать свои собственные потоки, вызовы методов выполняются на собственных потоках, которые их создают. AttachCurrentThread и DetachCurrentThread позаботятся о любом необходимом управлении внутренним состоянием jvm, например, о создании объектов потока Java, охватывающих собственные потоки.

0 голосов
/ 28 декабря 2011

JVM запускает собственные потоки, которые необходимо запустить. Вы запускаете создание этого потока, запуская JVM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...