J'essaie de lire les fichiers multiples à partir d'un répertoire et de créer un thread séparé pour chaque fichier. Pendant l'itération de la boucle, la classe interne anonyme ne peut pas utiliser de variables non finales.Multithreading inside pour la boucle
Ma question est de savoir comment créer plusieurs threads dans une boucle. (Je dois créer manuellement threads pour chaque fichier, le service dévers exécuteur utilisation ou autre chose)
class de
{
void commit(File x){
int sum =0;
try{
FileInputStream fin = new FileInputStream(x);
byte[]b= new byte[5000];
fin.read(b);
for (byte digit:b){
sum=digit+sum;
}
System.out.println(sum);
}
catch(Exception e){}
}
public static void main (String args[]){
File f = new File("C:\\Users\\Sanjana\\workspace\\IO\\Numbers");
File []store = f.listFiles(new FilenameFilter(){
public boolean accept(File f, String name){
return name.endsWith("txt");
}
});
for (File x: store){
Thread t = new Thread(){
public void run(){
//new de().commit(x); /**/Error here non final variable x**
}
};
}
}
}
Merci d'avoir modifié votre code affiché! –
Etes-vous sûr de lire ces fichiers à partir de plusieurs threads permettra d'améliorer les performances des applications? S'il vous plaît gardez à l'esprit que votre disque dur ne peut pas avoir sa tête de lecture à des positions différentes. – oddparity