sam*_*m_k 4 java java-native-interface multithreading android native
在这里,我想停止我的线程或杀死我在Java层上创建的线程,这个线程正在调用JNI函数.有时根据我的应用程序要求,我必须在某些条件下停止此JNI函数执行,否则不会.
new Thread(new Runnable() {
@Override
public void run() {
// My jni function call, It calls my JNI layer C function.
}
}
Run Code Online (Sandbox Code Playgroud)
现在当这个线程执行开始并且它在JNI级别上工作时我不担心,但是在某些情况下从其他类或方法我想停止这个JNI工作,所以我怎么能停止这个线程.
注意:这里我的线程也没有while循环所以我也无法检查一些全局标志变量.
所以有人知道如何在没有while循环的情况下调用任何JNI函数时杀死一个线程.
Pav*_*nek 11
如果线程正在执行本机代码,则无法安全地中断该线程.即使您的线程有一个事件循环,您也需要等到它完成本机调用.什么都不知道你的代码,我猜你有一个长期运行的本机调用,你不希望它阻塞主线程,所以你为该调用创建了一个单独的线程.您无法安全地中断单个本机呼叫.这里没有银弹.无论如何你需要改变你的代码,我的建议是:
Thread.interrupt()不会帮助你,因为"调用本机函数"不属于Javadoc中指定的任何可中断操作.Java线程将继续运行,只有它的中断状态才会被设置.
| 归档时间: |
|
| 查看次数: |
3389 次 |
| 最近记录: |