当前位置:  开发笔记 > 编程语言 > 正文

如何在java中重启线程?

如何解决《如何在java中重启线程?》经验,为你挑选了1个好方法。

我创建了一个程序,用于搜索源文件夹中的文件.如果找到任何文件,它会处理该文件并将其移动到目标文件夹,然后在源文件夹中查找新文件.它必须继续检查文件的源文件夹.

我用一个线程来查找源文件夹中的文件.我面临的问题是,在文件处理期间抛出任何异常时,线程都会停止.即使抛出异常,我也希望线程能够运行.它必须将导致错误的文件移动到其他文件夹并在源文件夹中查找新文件.如何让线程继续运行?

例如:

public void run() {
    try {
        searchfile();
    }
    catch(Exception e) {
        e.printStackTrace();
    }
}

public void searchfile(){
  ...
}

更新:

在我的问题中我应该更清楚.实际上有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
{
   public void run() {
   try {
      searchfile();
   } catch(Exception e) {
      e.printStackTrace();
   }
}

public void searchfile(){ ... } }

所有线程都不会停止运行,尽管它在中间发现任何异常.我怎样才能做到这一点?



1> Jon Skeet..:

如果一个线程由于未捕获的异常而死亡,答案很简单:在适当的位置捕获异常,以便继续.在searchfile方法中捕获异常,或者在循环中使run方法调用searchfile.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有