如何终止正在评估正则表达式的线程,--这种情况会发生灾难性的回溯?
有没有办法不使用 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
}
}
如何终止一个有回溯的长时间运行的线程?
最佳答案
How do I terminate a long going thread, which has backtracking?
每个回溯都有一个条件来评估返回或调用下一个级别。
if(conditionToReturn){
return;
}
else{
result = callRecursiveBacktrack();
}
应该用一个丑陋的实例变量canRun
打破你的设计模式(同步与否取决于情况)
像这样的东西:
if (this.canRun) {
if (conditionToReturn) {
return;
} else {
result = callRecursiveBacktrack();
if (!this.canRun) {
return;
}
}
else {
return;
}
关于java - 如何在评估正则表达式时消除线程阻塞 - 灾难性回溯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16962208/