Java 如何使用JVMTI和JNI从特定线程上下文调用方法?

Java 如何使用JVMTI和JNI从特定线程上下文调用方法?,java,c++,multithreading,java-native-interface,jvmti,Java,C++,Multithreading,Java Native Interface,Jvmti,我们使用JVMTI和JNI在JVMTI的方法入口和方法出口回调中发出静态方法调用。我们需要能够调用线程上下文上的静态方法,而不是JVMTI为方法入口和方法出口回调发出回调的线程上下文 通过实验,我们发现传递给方法回调的JNIEnv足以在特定线程上下文上发出回调,但我们还确定传递给方法回调的JNIEnv的指针/生存期是临时的,并且不会持续到调用之后 如果可能的话,如何在Java类中调用静态方法,并在指定的线程上下文中具体执行该操作。您的问题中没有太多信息,因此我只能提出一个一般性建议:您可以以“处

我们使用JVMTI和JNI在JVMTI的方法入口和方法出口回调中发出静态方法调用。我们需要能够调用线程上下文上的静态方法,而不是JVMTI为方法入口和方法出口回调发出回调的线程上下文

通过实验,我们发现传递给方法回调的JNIEnv足以在特定线程上下文上发出回调,但我们还确定传递给方法回调的JNIEnv的指针/生存期是临时的,并且不会持续到调用之后


如果可能的话,如何在Java类中调用静态方法,并在指定的线程上下文中具体执行该操作。

您的问题中没有太多信息,因此我只能提出一个一般性建议:您可以以“处理程序”的形式实现后台线程。也就是说,生成后台线程的对象监视
std::function
s队列。您可以从外部将新的
std::function
s发布到处理程序的队列中,然后处理程序将在其后台线程上按顺序执行这些操作。