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.

Si en un flujo paralelo de Java se llama a forEach mediante n hilos, ¿significa que se leen n elementos al mismo tiempo se leen para su procesamiento?

Entonces, quería procesar un archivo línea por línea en paralelo, y como el procesamiento de cada línea es independiente, no necesito que sea secuencial. Además, el archivo es grande, así que no quiero leer todo el archivo en la memoria inicialmente.
Entonces estaba pensando en llamar a java NIO File.lines() y luego procesar el flujo resultante usando n hilos. ¿Significa esto que solo se leerán n líneas en la memoria y se procesarán?
Estaba pensando que este enfoque debería ser similar a un enfoque de procesamiento de cubetas donde un hilo lee n líneas en una cola bloqueante, mientras que un conjunto de hilos procesa esas líneas leídas en paralelo.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, utilizando el método File.lines() del paquete NIO, puedes leer un archivo de texto grande línea por línea sin cargar todo el archivo en la memoria. Y procesarlo con múltiples hilos en paralelo es una buena manera de mejorar el tiempo de procesamiento.

    Cuando procesas el flujo utilizando n hilos, cada línea se leerá y procesará de forma independiente, así que no necesitas preocuparte por que sean secuenciales. Y sí, solo se leerán n líneas en la memoria y se procesarán en cada ronda, según el número de hilos especificado.

    Tu enfoque de utilizar un enfoque de procesamiento por lotes también es una buena idea, donde un hilo lee n líneas en una cola bloqueante y un grupo de hilos procesa esas líneas leídas en paralelo. Esto puede ayudar a equilibrar la carga de trabajo y garantizar un procesamiento eficiente de cada línea.

    En general, el uso de java NIO, procesamiento en paralelo, java-stream y parallel.foreach puede ser muy eficaz para procesar archivos grandes de manera paralela y eficiente, y parece que vas por buen camino con tu enfoque.

Comments are closed.