java获取linux下面所有线程,获取Linux中Java线程的线程ID
最后,我發(fā)現(xiàn)JNI方式是解決我的問題的最佳方式。作為參考,我張貼代碼,并建立它(基于example在維基百科)說明:
Java類負(fù)責(zé)接口的C代碼(GetThreadID.java):
public class GetThreadID {
public static native int get_tid();
static {
System.loadLibrary("GetThreadID");
}
}
C文件負(fù)責(zé)獲得線程ID(GetThread.c):
#include
#include
#include "GetThreadID.h"
JNIEXPORT jint JNICALL
Java_GetThreadID_get_1tid(JNIEnv *env, jobject obj) {
jint tid = syscall(__NR_gettid);
return tid;
}
如何使用GetThreadID類的一個例子:
class Main {
public static void main(String[] args) {
int tid = GetThreadID.get_tid();
System.out.println("TID=" + tid);
}
}
最后,構(gòu)建指令(javah自動生成GetThreadID.h):
JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:bin/javac::")
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
javac GetThreadID.java
javah GetThreadID
gcc -I${JAVA_HOME}/include -fPIC -shared GetThreadID.c -o libGetThreadID.so
javac Main.java
java Main
總結(jié)
以上是生活随笔為你收集整理的java获取linux下面所有线程,获取Linux中Java线程的线程ID的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: maven依赖的jar包版本不一样_Ma
- 下一篇: ZZULIOJ 1136: 首字母变大写