为了账号安全,请及时绑定邮箱和手机立即绑定

如何在native代码里面回调java中的方法

如何在native代码里面回调java中的方法

慕田峪4524236 2018-10-02 17:17:46
查看完整描述

1 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

这是一个C++中获得虚拟机的example,是在JDK 1.1中实现的,现在已经跑不通了,经供参考,但是里面得到虚拟机原理是一样的。

它用到了3个方法: Create VM,Attaching VM,Unloading VM.

JNI_CreateJavaVM() 方法用来加载和初始化一个java虚拟机并且返回JNI接口的指针(JNIEnv), 这个线程被看做是主线程。
JNIEnv是在当前线程中是合法的,如果其他的线程去访问java虚拟机,他必须调用一下AttachCurrentThread()方法,把自己附属到VM中才能获得JNIEnv。一旦调用成功,native的线程就像一个普通的java线程运行在native的线程中(native中的线程都是Linux线程,由内核调用执行)。native线程仍然连接到VM,直到它调用DetachCurrentThread()来分离。
主线程不能从VM中分离自己,必须调用DestroyJavaVM()方法去卸载整个VM。

查看完整回答
反对 回复 2018-10-28
  • 1 回答
  • 0 关注
  • 836 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信