栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Linux中获取Java线程的线程ID

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Linux中获取Java线程的线程ID

最后,我发现JNI方法是解决我的问题的最佳方法。作为参考,我发布了代码并为其构建了说明(基于Wikipedia
的示例):

负责连接C代码的Java类(

GetThreadID.java
):

public class GetThreadID {    public static native int get_tid();    static {        System.loadLibrary("GetThreadID");    }}

负责获取线程ID(

GetThread.c
)的C文件:

#include <jni.h>#include <syscall.h>#include "GetThreadID.h"JNIEXPORT jint JNICALLJava_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);    }}

最后,构建说明(

javah
自动生成
GetThreadID.h
):

JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:bin/javac::")export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.javac GetThreadID.javajavah GetThreadIDgcc -I${JAVA_HOME}/include -fPIC -shared GetThreadID.c -o libGetThreadID.sojavac Main.javajava Main


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/412212.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号