Open Directory Project(ODP)のURLを使用してマルチスレッドWgetを実装しています。次のエラーが発生します。
java.io.FileNotFoundException: log (Too many open files)
at java.io.FileOutputStream.openAppend(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:207)
at java.io.FileOutputStream.<init>(FileOutputStream.java:131)
at java.io.FileWriter.<init>(FileWriter.java:78)
at ODP.run(ODP.java:103)
これは、システム変数で示されている開いているファイル記述子の制限を超えているためだと読みました: cat / proc / sys / fs / file-max
同時に開始できるスレッドの数を制限する方法はありますか?CPUを実行できるスレッドの数によって自動的に実行されると思いました。
ありがとうございました!
編集:これはmainメソッド内のメインループです:
while (rs.next ()) {
// Process entry
String rsc = rs.getString ("resource");
String tpc = rs.getString("topic");
(new ODP(rsc, tpc, rs.getString("description"))).start();
BufferedWriter outLog = new BufferedWriter(new FileWriter("log", true));
outLog.write(count + ": " + rsc + " | " + tpc + "\n");
outLog.close();
++count;
}
ODP.run()メソッドで、BufferedWritterを作成します。
BufferedWriter out = new BufferedWriter(new FileWriter(cat.split("/")[1] + ".webtrec", true));
out.write(webtrec);
out.close();