Java 等待从尚未创建的服务器下载文件的最佳方式?

Java 等待从尚未创建的服务器下载文件的最佳方式?,java,asynchronous,client-server,Java,Asynchronous,Client Server,我请求从服务器下载一个文件。 问题是文件是在服务器端生成的,并且生成是异步的 起初我做了一些类似的事情 试试看{ 睡眠(10000); }捕获(例外e){ //待办事项 } 然后我对新下载的文件做了一些处理 问题是,有时生成文件需要10多秒,有时需要更少的时间。所以我的“测试”将随机通过或失败 我的第一次尝试是重复请求(每1000毫秒一次),直到我在服务器中找到该文件并在2分钟后超时。但我认为这真的是一个糟糕的设计 那么,等待文件生成然后下载的最佳方式是什么 编辑:我使用http通信。除非你有某

我请求从服务器下载一个文件。 问题是文件是在服务器端生成的,并且生成是异步的

起初我做了一些类似的事情

试试看{
睡眠(10000);
}捕获(例外e){
//待办事项
}

然后我对新下载的文件做了一些处理

问题是,有时生成文件需要10多秒,有时需要更少的时间。所以我的“测试”将随机通过或失败

我的第一次尝试是重复请求(每1000毫秒一次),直到我在服务器中找到该文件并在2分钟后超时。但我认为这真的是一个糟糕的设计

那么,等待文件生成然后下载的最佳方式是什么


编辑:我使用http通信。

除非你有某种方式来接收通知(就像亚马逊的后台工作一样),否则轮询几乎是你唯一能做的事情


如果您谈论的只是几秒钟(而不是几分钟或几小时),并且您控制服务器端,则可以在创建文件之前阻止请求处理。

那么阻止I/O操作如何

大概是这样的:

如何与远程服务器通信?插座HTTP

为HTTP编辑:
如果您还可以访问服务器端,那么您可以只发送一个包含文件内容长度的HTTP头,即使它没有创建,这样客户机就可以“连接”到它,直到它真正创建为止。也要小心超时。您还可以直接输出(传输)文件(而不是等待文件完成),我想这将消除超时问题。

HTTP。。我只是试着做了一个请求,并在服务器端重复检查文件是否已创建,所以仍然不确定该怎么做。是的。我对服务器也有控制权。在我看来,你应该创建后台作业来获取文件。万一我也要做同样的事。