博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JNI全局对象,及原生线程JNIENV传递
阅读量:4356 次
发布时间:2019-06-07

本文共 503 字,大约阅读时间需要 1 分钟。

JNIENV *env 无法在多线程之间进行传递,这时就需要为原生线程生成新的JNIENV指针

需要先保存一个JavaVM的全局变量。如果需要保存Java全局对象则需要创建一个全局的jobject对象。

 

 
JavaVM *g_jvm = NULL;
jobject g_obj = NULL;

env->GetJavaVM(&g_jvm);
JNIENV*env

//Attach主线程if (g_jvm->AttachCurrentThread(&env, NULL) != JNI_OK) {    LOGE("%s: AttachCurrentThread() failed", __FUNCTION__);return NULL;}

 

g_obj = env->NewGlobalRef(job);
env->DeleteLocalRef(g_obj);//使用完一定要释放,不然会造成内存泄漏g_jvm->DetachCurrentThread();//一定要报JNIENV从线程解绑定,不然会造成野指针

 

转载于:https://www.cnblogs.com/qcjd/p/9324895.html

你可能感兴趣的文章
微软职位内部推荐-Senior Development Engineer
查看>>
创建数据库的方法
查看>>
递归算法
查看>>
关于java中sendRedirect,forward和include区别
查看>>
在红帽RHEL7.0里配置网卡的四种方法
查看>>
LeetCode--二分查找相关算法
查看>>
RobotFramework自动化测试框架系统关键字之断言
查看>>
《Node.js In Action》笔记之流程控制
查看>>
通俗易懂云计算
查看>>
个人笔记 - Word2013 论文格式调整
查看>>
Python学习---Python下[字典]的学习
查看>>
Python学习---重点模块之xml
查看>>
Python学习---django之admin简介
查看>>
个人工作总结11(第二阶段)
查看>>
配置完IDEA开发lua后用idea竟然打不开lua的文件。
查看>>
synchronized、锁、多线程同步的原理是咋样
查看>>
AutoHotKey 快速入门
查看>>
sharepoint 2010批量导入数据
查看>>
Linux学习-Linux历史(总结篇)
查看>>
c++笔记
查看>>