¿Cuál es el propósito de flush () en las secuencias de Java?

En Java, el método flush() se usa en las transmisiones. Pero no entiendo cuál es el único propósito de usar este método.

 fin.flush(); 

dime algunas sugerencias

De los documentos del método de flush :

Vacía el flujo de salida y obliga a escribir los bytes de salida almacenados en el búfer. El contrato general de descarga es que llamar es una indicación de que, si los bytes escritos previamente han sido almacenados temporalmente por la implementación del flujo de salida, dichos bytes deben escribirse inmediatamente en su destino previsto.

El almacenamiento en búfer se realiza principalmente para mejorar el rendimiento de E / S. Se puede leer más sobre esto en este artículo: Ajuste del rendimiento de E / S de Java .

cuando damos cualquier comando, las secuencias de ese comando se almacenan en la ubicación de memoria llamada buffer (una ubicación de memoria temporal) en nuestra computadora. Cuando toda la ubicación de la memoria temporal está llena usamos flush () que vacía todas las secuencias de datos y los ejecuta por completo y le da un nuevo espacio a las nuevas secuencias en la ubicación temporal del búfer. Espero que comprenda

Cuando escribe datos en una secuencia, no se escribe inmediatamente y se almacena en el búfer. Así que use flush () cuando necesite estar seguro de que todos sus datos del búfer están escritos.

Necesitamos estar seguros de que todas las escrituras se completen antes de cerrar la secuencia, y es por eso que se llama a flush () en el archivo / buffer writer’s close ().

Pero si tiene un requisito de que todas sus escrituras se guarden en cualquier momento antes de cerrar la secuencia, use flush ()

Si el búfer está lleno, todas las cadenas que están almacenadas en el búfer, se guardarán en el disco. ¡Buffers se usa para evitar Big Deals! y sobrecarga

En la clase BufferedWriter que se coloca en libs java, hay una línea como:

 private static int defaultCharBufferSize = 8192; 

Si desea enviar datos antes de que el búfer esté lleno, tiene control. Solo flush it. Las llamadas a writer.flush () dicen: “envía lo que está en el búfer, ¡ahora!

libro de referencia: https://www.amazon.com/Head-First-Java-Kathy-Sierra/dp/0596009208

páginas: 453

A los flujos se accede a menudo mediante subprocesos que periódicamente vacían su contenido y, por ejemplo, lo muestran en la pantalla, lo envían a un socket o lo escriben en un archivo. Esto se hace por motivos de rendimiento. Vaciar una secuencia de salida significa que desea detenerse, esperar a que el contenido de la transmisión se transfiera por completo a su destino y luego reanudar la ejecución con la transmisión vacía y el contenido enviado.

Para el problema de rendimiento, los primeros datos se escriben en Buffer. Cuando el buffer se llena, los datos se escriben en la salida (archivo, consola, etc.). Cuando el búfer está parcialmente lleno y desea enviarlo a la salida (archivo, consola), entonces necesita llamar al método flush () manualmente para escribir el búfer parcialmente lleno en la salida (archivo, consola).