如何在Java中设置等待/睡眠超时阈值?

时间:2018-08-13 07:31:31

标签: java selenium

我的任务很简单,就是使用硒从url下载文件。我一直做到点击下载部分。现在我要等到文件下载完毕。我使用关注并完成。

do {
    Thread.sleep(60000);
}
while ((downloadeBuild.length()/1024) < 138900);

现在的挑战是我要等待多少时间?我可以设定一些门槛吗?我能想到的是在使用计数器时检查计数器是否达到10或类似的值?但是用Java还有其他方法吗?因此,在下载文件之前,我没有任何动作。

3 个答案:

答案 0 :(得分:4)

怎么样?

我认为使用TimeOut不稳定,因为不需要等待不可预测的下载操作。

您可以使用CompletableFuture转到supplyAsync进行下载,并使用thenApply进行处理/转换并通过{{ 1}},如下所示:

join

答案 1 :(得分:2)

您可以使用guava Stopwatch

Stopwatch stopwatch = Stopwatch.createStarted();
while ((downloadeBuild.length()/1024) < 138900 && topWatch.elapsed(TimeUnit.SECONDS) < 60);

答案 2 :(得分:0)

如果您想要的是超时练习,可以尝试以下代码:

    long timeout = 10 * 60 * 1000;
    long start = System.currentTimeMillis();
    while(System.currentTimeMillis() - timeout <= start ){
        //Not timeout yet, wait
    }
    //Time out, continue

在Java库中很常见。