我想從一個目錄中讀取多個文件,併爲每個文件創建一個單獨的線程。在迭代循環時,匿名內部類不能使用非最終變量。多線程內循環
我的問題是如何建立一個循環內的多個線程。(我需要手動爲每個文件創建,不能使用執行服務或別的什麼的線程)
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**
}
};
}
}
}
感謝您編輯您的發佈代碼! –
您確定從多個線程讀取這些文件會提高應用程序性能嗎?請記住,您的硬盤無法在不同的位置使用其讀取頭。 – oddparity