Dal*_*ale 7 java multithreading
如果方法调用超过10秒,我想杀死它并继续前进.
多线程是解决这个问题的唯一选择吗?
如果我使用多线程,我很新,我的run方法只包含一个方法,如下所示.如果myMethod()卡在无限循环中,有没有办法打断这个线程?
public void run() {
myMethod();
}
Run Code Online (Sandbox Code Playgroud)
我们假设myMethod()如下所示,更改它不是一个选项.
while(true){
System.out.println("Thinking.");
for (int i = 0; i < 100000; i++) {
//wasting time
}
}
Run Code Online (Sandbox Code Playgroud)
我打算使用Mik378的解决方案,但我认为这不会起作用,因为myMethod不会抛出InterruptedException异常.
使用线程来实现这一点很棘手.没有来自所述线程的合作,没有可移植且安全的方法来杀死线程.有关更多详细信息,请参阅如何在Java中终止线程?而为什么Thread.stop[等]过时?
更强大的方法是在单独的进程的上下文中调用该方法,并终止该进程.
一个更好的方法是理解为什么事情一开始就陷入困境,并找出一种方法来防止它们被卡住(或者是一种超时并抛出异常的方法等).在你的情况下,这是否是现实的可能性,我不知道.