パッケージcom.tigger、 パブリック クラスMyThread { 静的{
//ロードライブラリ、起動時にJVMを確実にロードする System.loadLibraryを(「TiggerThreadNative」); } 公共の 静的な 無効メイン(文字列[]引数){ MyThread myThread = 新しい新MyThread(); myThread.start0(); } プライベート ネイティブ ボイドSTART0(); }
1、Javaコードを記述/自宅/ mythread / COM /ティガー/ディレクトリにアップロードするJNI Cの手順を使用して通話を、MyThread.java
2、クラスプログラムのjavacにコンパイルMyThread.java
3、のうちのjavacパケットに実行されるコマンド、パッケージ外で実行されるヘッダのjavah packageName.ClassNameにこのコマンドを生成します
javahはcom.tigger.MyThread
4、MyThread.java下同じディレクトリにヘッダファイルをコンパイルします
5は、CプログラムのthreadNew.cを書き始める、および/ホーム/ mythread / COM /ティガー/ディレクトリを置きます
書式#include <pthread.hの> 書式#include <stdio.hに> の#include "com_tigger_MyThread.h" //はちょうど導入コンパイル.hファイル必要 がpthread_t PIDを、 無効 * thread_entity(無効 * のArg) { ながら、(1。){ はusleep( 100 ); のprintf(「Iは、N- \新しい新しいスレッドAM」); } } // このメソッド名は、パラメータコーディングここでは、メソッド名だけでコンパイルされた.hヘッダファイルからコピーする必要があります JNIEXPORT 無効 JNICALL Java_com_tigger_MyThread_start0(JNIEnvの* EVN、jオブジェクトC1) { のpthread_create( &PID、NULL、thread_entity、NULL); 一方(1 ){ はusleep( 100 )。 printf( "私はメインの\ nをしています" ); } } int型のmain(){ 戻り 0 ; }
Javaコードをメモリにロードすることができるように、ダイナミック・リンク・ライブラリにコンパイル6、threadNew.c
gccの-I /usr/java/jdk1.8.0_221/include -I /usr/java/jdk1.8.0_221/include/linux threadNew.c -fPIC -shared -o libTiggerThreadNative.so -pthread
7は、JVMをロードするためにので、/ホーム/ mythread /ディレクトリにファイルを移動し、パスに追加する.soコンパイル
MV libTiggerThreadNative.so /ホーム/ mythread /
コマンドを実行mythreadディレクトリを入力します。
輸出LD_LIBRARY_PATH = /ホーム/ mythread /
8、テスト
javaのcom.tigger.MyThread