【问题标题】:Doubt in thread concept [duplicate]对线程概念的怀疑[重复]
【发布时间】:2009-01-22 08:00:42
【问题描述】:

可能重复:
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();
      }
   }
}

【问题讨论】:

标签: java


【解决方案1】:

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

您的线程可能正在循环:

  • 尝试在源文件夹中查找文件
  • 如果没有,你就完成了(或者可能等待一段时间再试一次)
  • 处理文件
  • 捕获您理解的任何异常,并采取适当的措施 - 例如记录,将文件移动到“错误”文件夹,无论如何
  • 返回步骤 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    • 2013-09-07
    • 1970-01-01
    相关资源
    最近更新 更多