2009-10-08 9 views
1

mon code est le suivantImpossible de créer une boucle for à l'intérieur d'un thread java - pourquoi?

public void incomingMessageThread() throws FileNotFoundException, IOException 
{ 
    new Thread() 
    { 

     BuildData a = new BuildData(); 
     for(int i = 0; i<100; i++) 
     { 
      a.parseDataFile("_"+i+"/outgoingMessages"); 
     } 

    }.start(); 

} 

on me dit son un début illégal de la ligne. Si je cours le code en dehors d'un fil cela fonctionne bien. Des idées quoi de mal?

+1

En général, il est préférable de passer un 'Runnable' dans le constructeur' thread', plutôt que d'essayer de sous-classe une classe compliquée. C'est aussi une bonne idée de suivre les conventions sur le formatage. BTW: Vous devrez probablement trouver une façon différente de gérer les exceptions. Vous pourriez ne pas découvrir le fichier est manquant jusqu'à ce que la méthode soit revenue. –

+0

va faire merci, c'était juste un peu de jeter le code pour traiter des morceaux de données. :) – Steve

+0

Bien sûr je suppose que je devrais toujours suivre les meilleures pratiques même si c'est jeter !!!!!!!!!!!! – Steve

Répondre

11

Vous utilisez des instructions à l'intérieur d'une classe et à l'extérieur d'une méthode.

Depuis le javadoc pour Thread.run: "Les sous-classes de thread doivent remplacer cette méthode."

public void incomingMessageThread() throws FileNotFoundException, IOException 
{ 
    new Thread() 
    { 
     public void run() 
     { 
      BuildData a = new BuildData(); 
      for(int i = 0; i<100; i++) 
      { 
       a.parseDataFile("_"+i+"/outgoingMessages"); 
      } 
     } 

    }.start(); 

} 
0

fil est une classe pas une fonction (qui est la garde-robe de votre syntaxe ressemble au-dessus)

votre code doit être

class MyThread : public Thread { 
public void run() { 
    // code 
} 
} 

Thread t = new MyThread(); 
t.run() 
+2

devrait être t.start() pas t.run() – Glen

+0

Il essaie d'utiliser une classe interne anonyme. – SLaks

4

vous devriez avoir écrit quelque chose comme ceci (mettre en œuvre void run())

public void incomingMessageThread() throws FileNotFoundException, IOException 
{ 
Thread t= new Thread() 
    { 
    public void run() 
     { 
     BuildData a = new BuildData(); 
     for(int i = 0; i<100; i++) 
      { 
      a.parseDataFile("_"+i+"/outgoingMessages"); 
      } 
     } 
    }; 
t.start(); 
} 
Questions connexes