2009-01-22 7 views
-2

Duplicate possible:
How to restart thread in java?doute dans le concept de fil

J'ai créé un programme qui recherche un fichier dans le dossier source. S'il trouve un fichier, il traite ce fichier et déplace le fichier dans le dossier de destination et recherche le nouveau fichier dans le dossier source. Comme ça, il doit continuer à vérifier le dossier source pour un fichier. J'ai utilisé le fil pour rechercher des fichiers dans le dossier source. Le problème auquel je suis confronté est chaque fois qu'une exception se produit pendant l'exécution du processus de fichier. Je veux que le thread s'exécute même si l'exception se produit pendant le traitement du fichier. Il doit déplacer cette erreur pour additionner un autre dossier et rechercher un nouveau fichier dans le dossier source. Comment puis-je faire du fil pour continuer à courir?

Actuellement, il existe 4 dossiers source et 4 dossiers de destination. Je dois effectuer la même opération dans chaque paire de destination & source. J'ai donc créé 4 threads dans une classe et l'opération de recherche en deuxième classe et le traitement de fichiers en troisième classe.

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(); 
     } 
    } 
} 
+0

S'il vous plaît utilisez-le formatage du code tout en affichant. Sélectionnez le segment de code dans votre question et appuyez sur Ctrl + K. – Srikanth

+0

... ou cliquez sur le bouton avec les uns et les zéros (01101 ..) – Esko

+0

N'est-ce pas un doublon? http://stackoverflow.com/questions/468266/how-to-restart-thread-in-java Comme Jon Skeet vous y a répondu, Raja, vous devez [apprendre le traitement des exceptions] (http://www.google.com/ recherche? hl = fr & fkt = 703 & fsdt = 6297 & q = exception + manipulation + in + java & btnG = Google + Search & aq = 1 & oq = exception + han). – Srikanth

Répondre

2

Cela a très peu à voir avec le threading, et tout ce qui a trait à la gestion des exceptions.

Votre fil devrait probablement être passer par une boucle:

  • Essayez de trouver un fichier dans le dossier source
  • S'il n'y a pas, vous avez terminé (ou peut-être attendre un certain temps et essayez à nouveau)
  • Traitez le fichier
  • Attrapez toutes les exceptions que vous comprenez, et prenez les mesures appropriées - par ex. l'exploitation forestière, de déplacer le fichier dans un dossier « erreurs », quel que soit
  • Revenir à l'étape 1