怀疑在线程概念

时间:2009-01-22 08:00:43

标签: java

  

可能重复:
  How to restart thread in java?

我创建了一个搜索源文件夹中文件的程序。如果找到任何文件,它会处理该文件并将文件移动到目标文件夹并在源文件夹中查找新文件。就像它必须不断检查文件的源文件夹。我用线程在源文件夹中查找文件。我遇到的问题是在文件进程线程停止期间抛出任何异常。即使在文件处理期间抛出异常,我也希望线程能够运行。它必须将该错误移动到其他文件夹并在源文件夹中查找新文件。如何让线程继续运行?

实际上有4个源文件夹和4个目标文件夹。我必须在每个来源和相同的操作中执行相同的操作。目的地对。所以我在一个类中创建了4个线程,在第二个类中创建了搜索操作,在第三个类中创建了文件处理。

class MainClass
{
    public static void main(String[] args){
        for(int i=0;i<4;i++){
           SearchClass search = new SearchClass();
           Thread thread = new Thread(search);
           thread.start();
       }
   }
}

class SearchClass implements Runnable
{
   public void run() {
     try {
        searchfile();
     } catch(Exception e) {
        e.printStackTrace();
     }
   }

   public void searchfile(){
     try{
        ProcessClass p = new ProcessClass();
        p.fileProcess();
     }catch(Exception){
        e.printStackTrace();
     }
   }
}

class ProcessClass
{
    public void fileProcess(){
      try{
          .........................
          ...........  -----> 
          // Thread1 throws exception here and get stopped.
          // Its searching file in source folder again.
      }catch(Exception){
          e.printStackTrace();
      }
   }
}

1 个答案:

答案 0 :(得分:2)

这与线程无关,也与异常处理有关。

你的线程可能应该经历一个循环:

  • 尝试在源文件夹中找到一个文件
  • 如果没有,你就完成了(或者可能等一会儿再试一次)
  • 处理文件
  • 抓住您理解的任何例外情况,并采取适当的措施 - 例如记录,将文件移动到“errors”文件夹,无论
  • 返回第1步