java - java - 如何在java中设置等待/睡眠的超时阈值?
问题描述
我的任务很简单,就是使用 selenium 从 url 下载文件。我一直这样做,直到点击下载部分。现在我想等到文件下载完毕。很好。我使用以下并完成。
do {
Thread.sleep(60000);
}
while ((downloadeBuild.length()/1024) < 138900);
现在的挑战是我要等多久?我可以设置一些阈值吗?我能想到的是在do while中使用一个计数器并检查直到计数器变为10或类似的东西?但在 Java 中还有其他方式吗?因此,在下载文件之前,我没有任何操作要做。
解决方案
这个怎么样?
我认为使用TimeOut
不稳定,因为无需等待不可预测的下载操作。
您可以通过以下方式转向CompletableFuture
使用supplyAsync
进行下载和使用thenApply
进行处理/转换并检索结果join
:
public class SimpleCompletableFuture {
public static void main(String... args) {
testDownload();
}
private static void testDownload() {
CompletableFuture future = CompletableFuture.supplyAsync(() -> downloadMock())
.thenApply(SimpleCompletableFuture::processDownloaded);
System.out.println(future.join());
}
private static String downloadMock() {
try {
Thread.sleep(new Random().nextInt() + 1000); // mock the downloading time;
} catch (InterruptedException ignored) {
ignored.printStackTrace();
}
return "Downloaded";
}
private static String processDownloaded(String fileMock) {
System.out.println("Processing " + fileMock);
System.out.println("Done!");
return "Processed";
}
}
推荐阅读
- javascript - 如何转换数组中已经在javascript中的嵌套对象中的对象
- openlayers - 如何在 Chrome 中获取示例的源映射
- php - 在 PHP 中转换包含表情符号的请求输入并保存在 MySQL 中
- bash - 如何使用 sed 正则表达式模式匹配
- java - 从具有不同布局的 Activity 访问布局的 TextView
- php - rsa 签名验证使用 phpseclib vs openssl
- python - 获取html动态内容python3
- android - 无法将所选项目从微调器保存到数据库
- javascript - 使用变量Javascript动态更改gridTemplateColumns的重复值的任何方法
- php - 使用 php pdo 不为空时触发默认的 mysql 日期时间值