如题。我当前的代码对于操作系统来说太过分了,因为它在单独的线程中运行每个 wget 进程,这很好,但是我有将近 15k 文件要下载,所以我想使用线程池来完成这项工作。不幸的是,我必须使用 wget 进行下载过程。
ExecutorService executor = Executors.newFixedThreadPool(5);
for(String filename: files) {
try {
String encodedFilename = URLEncoder.encode(filename, "UTF-8");
final String cmd = "wget --no-check-certificate -O " + filename +" " + BipDownloader.bipUrl + encodedFilename;
Runnable run = new Runnable()
{
public void run() {
try {
System.out.println(cmd);
Process process = Runtime.getRuntime().exec(cmd);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
executor.submit(run);
} catch(IOException e) {
System.err.println(e.getMessage());
}
}
编辑
更新了源代码以使用线程池,但我的系统在下载过程中仍然不稳定。