0

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

有没有办法不使用 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
}

}

如何终止具有回溯的长期线程?

4

1 回答 1

1

如何终止具有回溯的长期线程?

每个回溯都有一个条件来评估返回或调用下一个级别。

if(conditionToReturn){
   return;
}
else{
    result = callRecursiveBacktrack();

}

canRun应该用一个丑陋的实例变量(同步或不同步)来打破你的设计模式,如下所示:

if (this.canRun) {
    if (conditionToReturn) {
        return;
    } else {
        result = callRecursiveBacktrack();
        if (!this.canRun) {
            return;
        }
    } 
  else {
        return;
   }
于 2013-06-06T12:41:33.487 回答