Lectura de nuevos datos de un archivo que se actualiza constantemente en Java

Tengo un archivo de registro que se actualiza constantemente con nuevas líneas de datos. Necesito obtener nuevos datos agregados en Java tan pronto como estén escritos. Por ahora mi solución es:

public static void readNonStop(String filename, boolean goToEnd, FileReadCallback readCallback) {
    if(readCallback == null) {
        return;
    }
    try {
        BufferedReader br = new BufferedReader(new FileReader(filename));
        try {
            String line = br.readLine();
            int lineNumber = 0;

            if(goToEnd) {
                while(br.readLine() != null) {}
            }

            while (true) {
                if(line != null) {
                    readCallback.onRead(lineNumber++, line);
                } else {
                    Thread.sleep(1);
                }
                line = br.readLine();
            }
        } finally {
            br.close();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Pero tengo la sensación de que debería haber una mejor manera. No me gusta la idea de un bucle de funcionamiento constante con un "sueño" dentro y preferiría algún tipo de enfoque basado en eventos.

Si confío en los eventos de FileSystem para volver a abrir el archivo cada vez que se modifica, se produce un retraso.

¿Cuál es la forma correcta de hacerlo para esta situación?

¡Gracias por adelantado!

Respuesta 1

Me gustaría aplicar el mismo efecto que shell.setAlpha (240), sin embargo, estuve navegando por Internet durante un par de horas y todavía no encontré la solución. Motivo: decidí mejorar la apariencia visual ...

En Powermock hay un método cuando Nuevo. Soy nuevo en Jmockit. Estoy migrando mi aplicación de Powermock a Jmockit. ¿Puede decirme cuál es el equivalente para cuándo Nuevo en Jmockit o cómo ...

Tengo una aplicación Java en funcionamiento que puede encontrar el archivo creado más recientemente en una carpeta. Mi objetivo final es tener esa aplicación en una página web para que cuando un usuario abra la página web, la página provoque el más reciente ...

Estoy tratando de hacer la interfaz de un programa usando Java Swing. Tengo un contenedor donde agrego 3 JPanels con algunos componentes. El problema es que cuando amplío el marco todos esos 3 JPanels se encienden ...