2012-07-29 88 views
0

我想验证一些文本文件。在前端我使用JTextarea,每当用户输入'Enter'键时调用以下方法。如果文件太大,说5000行,如果用户多次输入'Enter'键,那么我会得到意想不到的结果,即使该行是有效的,它也会显示为无效。文本文件验证

是否有任何与睡眠有关的事情,我是否应该增加睡眠时间或其他必须做的事情?任何想法将有所帮助

private TreeSet validate(int curLine, TreeSet errorSet) { 
    int increment = 0; 
    int nextLine = 0; 

    if (curLine == lines.length || errorSet.size() != 0) { 
     return errorSet; 
    } else { 
     String line = lines[curLine]; 

     //validation starts. After validation, line is incremented as per the requirements 

     increment = 1 //As per requirement. Depends on validation results of the line 



     if (increment > 0) { 
      try{ 
       Thread.currentThread().sleep(100); 
       }catch(Exception ex){ 
       System.out.println(ex); 
       } 
      nextLine = (curLine + increment); 
      validate(nextLine, errorSet); 
     } 
    } 
    return errorSet; 
} 

回答

1

我wouldnt看让睡眠时间更长/更短。相反,我会考虑在编组触发器时进行更好的验证。在进行验证请求时是否有任何理由允许输入验证请求?如果不是的话,我会在当前进程尚未完成时阻止调用进行验证。

如果您认为多个验证应该能够同时发生,那么我会查找为这些操作创建线程池。测试我确定可以同时运行多少个线程,并因此确定线程池的大小。此时,系统内存也可能会发挥重要作用,因此您可能需要在测试时查看这些统计信息。

+0

不错的主意。如何阻止? – FirmView 2012-07-29 07:34:07

+1

一个暴力方法(读 - 有点天真,但有效)将放置一个全局的,易变的布尔值,测试它为false,在启动过程时将其设置为true,并将其设置为false结束。 – akf 2012-07-29 07:37:58

+0

辉煌!我会查一下。谢谢 – FirmView 2012-07-29 07:39:53