2023-01-20 325
在这里,我想停止线程或杀死在Java层上创建的线程,此线程正在调用JNI函数.有时,根据我的申请要求,我必须在某些情况下在某些情况下停止此 jni函数执行,否则不会.
new Thread(new Runnable() {
@Override
public void run() {
// My jni function call, It calls my JNI layer C function.
}
}
现在,当启动此线程执行并在JNI级别进行工作时,我对此不必担心,但是从某种情况下的其他类或方法来看,我想停止此JNI工作,所以我如何停止此线程.
注意:在这里我的线程也没有循环,因此我也无法使用一些全局标志变量检查.
因此,有人对如何杀死线程时是否有任何呼叫JNI功能的想法.
如果执行本机代码,则不能安全地中断线程.即使您的线程有事件循环,您也需要等到完成本机通话为止.对您的代码一无所知,我想您有一个长期运行的本机通话,您不希望它堵塞主线程,因此您为该调用创建了一个单独的线程.您无法安全地中断单个本机呼叫.这里没有银弹.无论如何,您都需要更改代码,我的建议是:
在不会帮助您,因为”调用本机功能”不会属于Javadoc中指定的任何可中断的动作. Java线程将继续运行,只有它是中断状态.
最好不要突然杀死线程. C函数分配的资源可能无法释放.
如果C函数正在等待某些内容,则可以触发条件返回并检查错误代码.
对于本机”通过JNI调用”或纯Java的代码没有什么特别的,所有IO代码都使用JNI代码,您可以使用普通的Java线程方法将其停止.
只使用Thread.Stop() or Thread.Inturrupt()
以上所述是小编给大家介绍的停止调用JNI函数的Java线程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/26049.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态