Cの手書きは、マルチスレッドは、Java用の呼び出し、

パッケージ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

  

おすすめ

転載: www.cnblogs.com/sheseido/p/11620917.html