Establecer un límite de tiempo / tiempo de espera de un método

Tengo un método simple como esto:

public void foo(int runForHowLong) {
    Motor.A.forward();
}

Ahora quieren ser capaces de pasar de un argumento a foo(), que establece un límite de tiempo para ¿cuánto tiempo foo() se ejecutará. Como si me envían foo(2), que tiene una duración de 2 segundos.

4 Kommentare

  1. 6

    Puede utilizar AOP y un @Timeable anotación de jcabi-aspectos (soy desarrollador):

    class Motor {
      @Timeable(limit = 1, unit = TimeUnit.SECONDS)
      void forward() {
        //execution as usual
      }
    }

    Cuando el tiempo se alcanza el límite de su hilo obtener interrupted() indicador establecido para true y es su trabajo para manejar correctamente esta situación y para detener la ejecución.

  2. 1

    Vistazo a esta pregunta en Stackoverflow: Ejecutar el código de x segundos en Java?

    Es exactamente la misma relacionados con los requisitos.

    Como yo interprete de tu pregunta te gustaría tener el método de ejecución por 2 minutos. Para lograr que usted necesita para comenzar un Hilo que puede controlar por 2 minutos y luego se detiene el hilo.

  3. -1

    La TimeUnit clase proporciona un método requerido para ello.

    Échale un vistazo aquí: TimeUnit en JDK 6

    • Eso no soluciona el parte de detención de la operación después de x segundos.
  4. -3
    • Si quieres que se ejecute durante dos segundos, se puede utilizar
      Thread.sleep(2000). Tenga en cuenta que Thread.sleep(2000) es más de un
      «sugerencia» de un «comando»; que no se ejecute durante exactamente 2000
      milisegundos, debido a la programación en la JVM. Puede ser casi
      simplificado para ser aproximadamente 2000 milisegundos.

    • Si quieres que siga llamando forward durante 2 segundos (lo que resultaría en un buen número de invocaciones de la función), se le
      necesidad de utilizar un temporizador de algún tipo.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea