我正在尝试调用返回csv文件的Web服务。因此,我调用的每个URL都有一个后缀,该后缀是一个字符串,该字符串表示要生成的csv。然后,我想将此csv保存到文件。有很多东西要生成,所以我要从多个线程中调用此类。每次我运行程序时,完成后返回的文件数量都是不同的。 Web服务运行良好,因为如果我从没有创建文件的浏览器手动调用URL,则将生成并下载csv。总共大约有15,000个URL,由12个线程调用。我在输出控制台中没有收到任何错误,只是说构建成功。通常每次运行大约生成1500-2000个文件,而不是15000。我正在使用apache的通用io FileUtils库将URL保存到文件中。

final int maxRetries = 5;
HistoryWebservice historyWS = new HistoryWebservice();
String history = historyWS.getHistory(maxRetries);

public class HistoryWebservice {
    public String getHistory(int maxRetries, String str) throws Exception {
        maxRetries = Math.max(0, maxRetries); //Make sure we don't have a negative retry counter

        while (maxRetries >= 0) {
            try {
                FileUtils.copyURLToFile("http://myservice.myservice/" + str, "/tmp/file" + str);
            }
            catch(<Catch the timeout exception>) {
                maxRetries--;
            }
        }

        throw new TimeoutException("Max retries exceeded");
    }

}

最佳答案

它是UBUNTU 14.04上允许的打开文件。缺省值为2096,因此使用命令ulimit -n 100000可以正常运行。

08-07 19:30