問題のように。私の現在のコードは、すべてのwgetプロセスを個別のスレッドで実行するためOSにとってはやり過ぎです。これは問題ありませんが、ダウンロードするファイルが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());
}
}
編集
スレッドプールを使用するようにソースコードを更新しましたが、ダウンロード中にシステムがまだ不安定です。