es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Esperar la operación prolongada y mostrar un aviso emergente.

¿Es posible esperar a que un método (digamos METHOD1) termine, pero si se está ejecutando por más de X segundos, llamar a otro método hasta que METHOD1 regrese?

Algún pseudocódigo:

method1();
startCountdown(1000); // tiempo en milisegundos
while (method1() todavía se está ejecutando) {
method2(); // muestra un pop-up con spinner (Swing/AWT)
}

Supongo que debe hacerse con concurrencia, pero no estoy acostumbrado a la programación concurrente. Así que no tengo idea de cómo empezar.

El marco de UI utilizado es Swing/AWT.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible esperar a que un método termine, pero si está en funcionamiento más de X segundos, llama a otro método hasta que el MÉTODO1 devuelva. Para hacerlo, puedes usar concurrencia.

    Puedes utilizar un CountDownLatch para esperar a que termine el método. El CountDownLatch esperará durante un cierto tiempo (X segundos) y si el método aún no ha terminado, llamará al otro método.

    Aquí tienes un ejemplo de cómo hacerlo utilizando Java:

    CountDownLatch latch = new CountDownLatch(1);
    
    // Inicie el método
    method1();
    
    // Inicie la cuenta regresiva
    latch.await(1000, TimeUnit.MILLISECONDS);
    
    // Si el método no ha finalizado, llama al otro método
    if (latch.getCount() > 0) {
        method2(); // muestra un popup con un spinner (Swing/AWT)
    }
    

Comments are closed.