Leer desde BufferedReader por una duración específica

Entonces, estoy leyendo desde un BufferedReader. Todo va bien, hasta que agregue una condición. Necesito leer de BufferedReader durante un período de tiempo específico.

Esto es lo que estoy haciendo ahora.

while ((line = br.readLine()) != null
                    && System.currentTimeMillis() - start < maxReadTime.toMillis()) { 
    // doingSomethingHere()
}

El problema: InputStream está activo incluso después de que haya transcurrido el tiempo. Por ejemplo, maxReadTime es de 30 segundos. la entrada sigue llegando en 20 segundos. Durante los siguientes 12 segundos, no hay actividad. Ahora, cuando llega la siguiente entrada, la secuencia está abierta y se cierra solo después de haber leído la entrada. Sin embargo, no proceso esta entrada porque el ciclo while finaliza.

Lo que esperaba o necesito: Stream se cerrará a los 30 segundos. Es entonces cuando la entrada llega a 32 segundos, el flujo está cerrado y no escucha ninguna entrada.

Sé vagamente sobre ExecutorService. No estoy seguro de si ese es el camino correcto.

Respuesta 1

Simplemente ponga su condición de temporizador antes de leer de la transmisión

while ((line = br.readLine()) != null) {
    boolean active = System.currentTimeMillis() - start < maxReadTime.toMillis();
    if (!active) {
        br.close();
    }         
    // doingSomethingHere()
}

En este caso, si la primera condición es false(el tiempo ha expirado), la segunda no se ejecutará en absoluto

Respuesta: 2

Estoy tratando de representar una barra de salud con Slick. Quiero un rectángulo rojo con uno verde delante para mostrar la salud restante. Esto es lo que tengo hasta ahora: Rectangle healthBG = new ...

Todavía estoy aprendiendo a codificar Java y tenía una pregunta sobre cómo funciona la herencia. La clase A es la clase principal y la clase B es la subclase que hereda todos los métodos de la clase A. Supongamos que ...

Estoy intentando escribir un programa cliente FTP y tengo flujos de entrada y salida para transferir archivos entre el servidor y mi computadora. Cuando pensaba en cómo diseñar la clase, no podía decidir ...

En primer lugar, permítanme decir que soy un novato completo con PNL. Aunque, como sigue leyendo, eso probablemente se volverá sorprendentemente evidente. Estoy analizando las páginas de Wikipedia para encontrar todas las menciones de la página ...