50,331
社区成员




package tprem;
import java.util.ArrayList;
import java.util.List;
import java.util.Queue;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.LinkedBlockingQueue;
import java.io.File;
public class LoadAllFile {
LinkedBlockingQueue<String> qudirs = new LinkedBlockingQueue<String>();
LinkedBlockingQueue<String> qufile = new LinkedBlockingQueue<String>();
public static ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
int hasrun = 0;
int l = 0;
public void loadFiles(final String oriPath) throws InterruptedException {
File file = new File(oriPath);
File[] fileList = file.listFiles();
for(int i = 0; fileList != null && i < fileList.length; i++) {
if(fileList[i].isFile()) {
qufile.put(fileList[i].getAbsolutePath());
}
else if(fileList[i].isDirectory()) {
qudirs.put(fileList[i].getAbsolutePath());
}
}
/*if( qudirs.size()/100 - hasrun * 5 > 10&& hasrun < 10) {
hasrun ++;
cachedThreadPool.execute(new Runnable() {
@Override
public void run() {
try {
if(!qudirs.isEmpty())
loadFiles(qudirs.take());
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
});
}*/
if(l++ > 1000) {
Thread t = Thread.currentThread();
String name = t.getName();
System.out.println("线程" + name + ":"+this. qudirs.size());
l = 0;
}
if(!qudirs.isEmpty())
loadFiles(qudirs.take());
}
public static void main(String [] args) {
LoadAllFile l = new LoadAllFile();
try {
l.loadFiles("F:\\");
int i = 0;
i++;
System.out.println(i);
cachedThreadPool.shutdown();
System.out.println(l.qufile.size());
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}