我正在进行递归文件检查,问题是我无法在方法本身内部拥有计数器,因此我在外部声明了它。但是问题是,这不是线程安全的。
private int countFiles = 0;
private int getTotalFiles(String path) {
File file = new File(path);
File listFile[] = file.listFiles();
for (File f : listFile) {
if (f.isFile()) {
countFiles++;
}
if (f.isDirectory()) {
getTotalFiles(f.getAbsolutePath());
}
}
return countFiles;
}
类变量countFiles不是线程安全的。如何使此线程安全?
最佳答案
您不需要字段,只需将递归调用的结果添加到countFiles
即可。
private int getTotalFiles(String path) {
//...
if (f.isFile()) {
countFiles++;
}
if (f.isDirectory()) {
countFiles += getTotalFiles(path);
}
}