java - 如何在评估正则表达式时消除线程阻塞 - 灾难性回溯

标签 java regex multithreading

如何终止正在评估正则表达式的线程,--这种情况会发生灾难性的回溯?

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

相关文章:

python - 具有重复组的正则表达式

c# - 打破 parallel.foreach?

java - 使用多个线程处理单个 HTTP 请求

java - 如何使用自定义适配器在 ListView 中进行搜索

php - 通过 REGEXP 在 mysql 中搜索时遇到问题

ios - 我怎么知道正则表达式的哪一部分与 Objective-c 匹配

c# - CPU + 时间密集型方法的 Thread.Abort 替代方案

java - 使用 java 8 流处理空属性并使用 lambda 表达式进行排序

使用组合框和文本字段过滤 JTable 中的数据时出现 Java 错误

java - 附加图像时 TextView 的资源 ID 错误