JNI多線程

JavaVM 代表的是Java虛擬機博个,所有的工作都是從JavaVM開始
可以通過JavaVM獲取到每個線程關(guān)聯(lián)的JNIEnv

如何獲取JavaVM春缕?

  1. 在JNI_OnLoad函數(shù)中獲取
  2. (*env)->GetJavaVM(env,&javaVM);
JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved){
    LOGI("%s","JNI_OnLoad");
    javaVM = vm;
    return JNI_VERSION_1_4;
}

每個線程都有獨立的JNIEnv

  • 初始化
//獲取class必須要在主線程中
jclass uuidutils_class_tmp = (*env)->FindClass(env,"com/dongnaoedu/androidlinux/UUIDUtils");
//創(chuàng)建全局引用
uuidutils_class_global = (*env)->NewGlobalRef(env,uuidutils_class_tmp);
//獲取jmethodId也可以在子線程中
uuidutils_get_mid = (*env)->GetStaticMethodID(env,uuidutils_class_global,"get","()Ljava/lang/String;");
  • 創(chuàng)建多線程
void* th_fun(void* arg){
    int i;
    for (i = 0; i < 5; i++) {
        JNIEnv* env;
        //關(guān)聯(lián)參數(shù)
        //JavaVMAttachArgs args = {JNI_VERSION_1_4, "my_thread", NULL};
        //(*javaVM)->AttachCurrentThread(javaVM,&env,&args);
        (*javaVM)->AttachCurrentThread(javaVM,&env,NULL);
        jobject uuid_jstr = (*env)->CallStaticObjectMethod(env,uuidutils_class_global,uuidutils_get_mid);
        const char* uuid_cstr = (*env)->GetStringUTFChars(env,uuid_jstr,NULL);
        LOGI("uuid:%s",uuid_cstr);
        //退出線程
        if(i == 4){
            goto end;
        }
        sleep(1);
    }
end:
    //取消關(guān)聯(lián)
    (*javaVM)->DetachCurrentThread(javaVM);
    pthread_exit((void*)0);

}
pthread_t tid;
pthread_create(&tid, NULL,th_fun,(void*)"NO1");
  • 銷毀
(*env)->DeleteGlobalRef(env,uuidutils_class_global);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌延都,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,222評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件睛竣,死亡現(xiàn)場離奇詭異晰房,居然都是意外死亡,警方通過查閱死者的電腦和手機射沟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評論 3 385
  • 文/潘曉璐 我一進店門殊者,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人验夯,你說我怎么就攤上這事猖吴。” “怎么了挥转?”我有些...
    開封第一講書人閱讀 157,720評論 0 348
  • 文/不壞的土叔 我叫張陵海蔽,是天一觀的道長。 經(jīng)常有香客問我扁位,道長准潭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,568評論 1 284
  • 正文 為了忘掉前任域仇,我火速辦了婚禮刑然,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘暇务。我一直安慰自己泼掠,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,696評論 6 386
  • 文/花漫 我一把揭開白布垦细。 她就那樣靜靜地躺著择镇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪括改。 梳的紋絲不亂的頭發(fā)上腻豌,一...
    開封第一講書人閱讀 49,879評論 1 290
  • 那天,我揣著相機與錄音嘱能,去河邊找鬼吝梅。 笑死,一個胖子當(dāng)著我的面吹牛惹骂,可吹牛的內(nèi)容都是我干的苏携。 我是一名探鬼主播,決...
    沈念sama閱讀 39,028評論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼对粪,長吁一口氣:“原來是場噩夢啊……” “哼右冻!你這毒婦竟也來了装蓬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,773評論 0 268
  • 序言:老撾萬榮一對情侶失蹤纱扭,失蹤者是張志新(化名)和其女友劉穎牍帚,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體跪但,經(jīng)...
    沈念sama閱讀 44,220評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡履羞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,550評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了屡久。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忆首。...
    茶點故事閱讀 38,697評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖被环,靈堂內(nèi)的尸體忽然破棺而出糙及,到底是詐尸還是另有隱情,我是刑警寧澤筛欢,帶...
    沈念sama閱讀 34,360評論 4 332
  • 正文 年R本政府宣布浸锨,位于F島的核電站,受9級特大地震影響版姑,放射性物質(zhì)發(fā)生泄漏柱搜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,002評論 3 315
  • 文/蒙蒙 一剥险、第九天 我趴在偏房一處隱蔽的房頂上張望聪蘸。 院中可真熱鬧,春花似錦表制、人聲如沸健爬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽娜遵。三九已至,卻和暖如春壤短,著一層夾襖步出監(jiān)牢的瞬間设拟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評論 1 266
  • 我被黑心中介騙來泰國打工久脯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蒜绽,地道東北人。 一個月前我還...
    沈念sama閱讀 46,433評論 2 360
  • 正文 我出身青樓桶现,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鼎姊。 傳聞我的和親對象是個殘疾皇子骡和,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,587評論 2 350

推薦閱讀更多精彩內(nèi)容