gpt4 book ai didi

java - 我在 java 中调用一个我无法控制的方法。如果我没有得到它的回应,我想杀死它并继续前进

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:16:00 24 4
gpt4 key购买 nike

如果方法调用时间超过 10 秒,我想终止它并继续。

多线程是我解决这个问题的唯一选择吗?

如果我使用我非常陌生的多线程,我的运行方法将只包含如下一个方法。如果 myMethod() 陷入无限循环,是否有办法中断此线程?

public void run() {
myMethod();
}

让我们假设 myMethod() 是以下内容并且无法更改它。

while(true){
System.out.println("Thinking.");
for (int i = 0; i < 100000; i++) {
//wasting time
}
}

我打算使用 Mik378 的解决方案,但我认为这不会起作用,因为 myMethod 不会抛出 InterruptedException 异常。

最佳答案

使用线程来实现这一点很棘手。没有所述线程的合作,没有可移植和安全的方法来终止线程。有关详细信息,请参阅 How do you kill a thread in Java?Why are Thread.stop [et al] deprecated?

更稳健的方法是在单独进程的上下文中调用该方法,然后终止该进程。

一个更好的方法是首先理解为什么事情会卡住,并找出一种方法来防止它们卡住(或者一种超时和抛出异常的方法等)。我不知道这对你的情况是否可行。

关于java - 我在 java 中调用一个我无法控制的方法。如果我没有得到它的回应,我想杀死它并继续前进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13748403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com