Cómo establecer un umbral de tiempo de espera para esperar / sueño en Java?

Mandar Kale:

Mi tarea es simple para descargar un archivo desde una URL usando selenio. Lo hice hasta que al hacer clic en la parte de descarga. Ahora quiero esperar a que el archivo es downloaded.Fine. Yo uso siguiente y hecho.

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

Ahora reto es que la cantidad de tiempo he esperado? ¿Puedo establecer un umbral? No puedo pensar en es el uso de un contador en tiempo y tareas de verificación hasta el contador va a 10 o algo por el estilo? Pero de otra manera en Java? Como tal no tengo ninguna acción para hacer hasta el archivo se descarga.

caballeros:

¿Qué tal esto?

Creo que el uso TimeOutno es estable ya que no hay necesidad de esperar a que un no-predecible operación de descarga.

Sólo se puede recurrir a CompletableFutureusar supplyAsyncpara hacer la descarga y utilizar thenApplypara hacer el procesamiento / conversión y recuperar el resultado de joinla siguiente manera:

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";
    }
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=119160&siteId=1
Recomendado
Clasificación