日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java native方法_并发系列-native函数回调Java方法原理实践

發布時間:2025/3/15 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java native方法_并发系列-native函数回调Java方法原理实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寫在前面

上一篇分享了Java調用native函數過程原理實踐,文章最后留了一個問題,本章主要對C程序回調我們的Java程序原理進行實踐。

調用C程序之后他是怎么知道來調用我們我們的哪個方法?又是如何進行調用的呢?帶著這兩個疑問往下看。

run方法是怎么執行的?這里分六個步驟來進行驗證:

1、修改代碼,讓c程序來調用這里的run方法

package org.xinhua.cbcloud.util;public class ThreadTest { static { // 裝載庫,保證JVM在啟動的時候就會裝載,故而一般是也給static System.loadLibrary( "ThreadTestNative" ); } public static void main(String[] args) { ThreadTest threadTest =new ThreadTest(); threadTest.start0(); } public void run(){ System.out.println("I am java Thread !!"); } private native void start0();}

2、javac編譯java文件生成.class文件

3、javah生成頭文件

4、編寫thread3.c 文件

#include#include#include "org_xinhua_cbcloud_util_ThreadTest.h"pthread_t pid;JNIEXPORT void JNICALL Java_org_xinhua_cbcloud_util_ThreadTest_start0(JNIEnv *env, jobject obj){jint ret = 0;//獲取java類 printf("init");jclass cls = (*env)->FindClass(env,"org/xinhua/cbcloud/util/ThreadTest");if(cls==NULL){printf("find Class error!");return;}//獲取java類構造方法jmethodID cid =(*env)->GetMethodID(env,cls,"","()V");if(cid==NULL){printf("find constructor error!");return;}//創建對象jobject job = (*env)->NewObject(env,cls,cid,NULL);if(job==NULL){printf("new instance error!");return;}//獲取java的run方法jmethodID tid =(*env)->GetMethodID(env,cls,"run","()V");if(tid==NULL){printf("find constructor error!");return;}//回調方法ret = (*env)->CallIntMethod(env,job,tid,NULL);printf("finish JNICall!");}int main(){return 0;}

5、生成動態庫鏈接文件

gcc -fPIC -I /usr/lib/jvm/java-1.8.0-openjdk/include -I /usr/lib/jvm/java-1.8.0-openjdk/include/linux -shared -o libThreadTestNative.so thread3.c

6、執行測試

回調成功

寫在最后

本章對一些編譯、生成頭文件的之后的操作沒有操作截圖,在上一篇已經詳細介紹過了,有不明白的可以結合上一篇一起來看,如果還是有不明白的地方可以給我留言。

總結

以上是生活随笔為你收集整理的java native方法_并发系列-native函数回调Java方法原理实践的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。