如何杀死一个正在计算正则表达式的线程,——这发生在灾难性的回溯中?
有没有一种方法可以不使用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;
}