如何消除计算正则表达式时的线程阻塞——灾难性回溯



如何杀死一个正在计算正则表达式的线程,——这发生在灾难性的回溯中?

有没有一种方法可以不使用thread. stop(),而是杀死线程?

我已经尝试了future.cancel(true),但是这并不终止线程,只是试图中断线程。

考虑到这是一个类:

public class myRegex implements Runnable
{
   public void run(){
this.evaluateRegex(pattern, matcher);  // internally calls the patterns and matcher...
}
    public void evaluateRegex(Stirng pattern, String matcher)
{
// does the code specific logic
}
}

我如何终止一个长线程,它有回溯?

我如何终止一个长线程,它有回溯?

每次回溯都有一个条件来计算返回或调用下一级。

if(conditionToReturn){
   return;
}
else{
    result = callRecursiveBacktrack();
}
你应该用一个丑陋的实例变量canRun来破坏你的设计模式(是否同步取决于情况)。像这样:
if (this.canRun) {
    if (conditionToReturn) {
        return;
    } else {
        result = callRecursiveBacktrack();
        if (!this.canRun) {
            return;
        }
    } 
  else {
        return;
   }

最新更新