我的程序多次调用数学求解器CPLEX。每次从我执行的Java执行CPLEX时都可以设置时间限制。问题是,在极少数情况下,我的程序只会陷入CPLEX提供的MyObservable+'().length'
方法中。我不知道那个错误在哪里,它绝对不在我正在解决的数学模型中,因为在java之外输出并解决它是有效的。但这不是我的问题所在,虽然我当然也要感谢你对此的意见。
我的问题是:无论如何,我如何让我的程序立即离开.solve()
方法?在下面的示例中,我尝试解决此问题。在那里,.solve()
方法在方法.solve()
中调用。
execute()
这种方法不起作用,因为public synchronized void executeSafely(int limitSeconds) {
Thread t = new Thread() {
@Override
public void run() {
execute();
}
};
t.start();
try {
Thread.sleep(3000 * limitSeconds);
} catch (InterruptedException e) {
e.printStackTrace();
}
t.interrupt();
}
方法中没有检查中断,我无法更改该方法。用.solve()
替换.interrupt()
也不起作用,因为.stop()
会导致线程暂停。
那么有没有其他方法可以立即终止外部程序的执行?