usar - java swing
¿El grupo de subprocesos de unión y unión de Java es bueno para ejecutar tareas enlazadas de IO? (3)
en mi aplicación, tengo que resolver un problema ejecutando muchas tareas vinculadas a la red y, en algún momento, una tarea vinculada y ser dividido en tareas más pequeñas vinculadas a la red. Estas tareas se están ejecutando actualmente utilizando el mecanismo de agrupación de subprocesos estándar de Java. Me pregunto si puedo pasar al marco de bifurcación y unión. Pero la pregunta es, ¿usualmente se usa forkandjoin framework para resolver operaciones vinculadas a IO o CPU? Supongo que son principalmente para operaciones vinculadas a la CPU porque el marco de bifurcación y unión hace uso de la técnica de robo de trabajo para utilizar los procesadores centrales multo, pero si lo uso para tareas vinculadas a IO, ¿habrá algún efecto adverso?
En este caso, no parece haber una ventaja convincente para unir las bifurcaciones.
Tampoco parece haber una desventaja significativa porque no estarías manejando un recurso demasiado duro.
en general, me quedaría con el grupo de subprocesos hasta que no tenga otro desarrollo importante que hacer.
Fork-join está diseñado para tareas de cómputo por lo que generalmente diría que no. Fork-join tiene una API ( ManagedBlocker api) para indicar al framework FJ que su hilo se bloqueará por un tiempo y no para alinear nuevas tareas, pero está realmente diseñado para esperas cortas (como obtener un bloqueo), no de forma arbitraria. espera a IO.
Tenemos un sistema que usa fork-join y desviamos las tareas ligadas a IO a un grupo de ejecutores por separado. Cuando llegan los datos, activa las tareas en el grupo fork-join, de modo que allí solo se realiza el trabajo de cpu-bound.
Si está tratando de abordar el aspecto "enlazado de E / S" de su problema, dudo que el cambio de subprocesos estándar a fork y join vaya a mejorar las cosas ... suponiendo que haya implementado el subproceso actual. solución adecuada. (Y según la respuesta de Alex Miller, el cambio podría empeorar las cosas significativamente).
O para decirlo de otra manera, la manera de hacer que su aplicación de enlace de E / S sea más rápida es abordar los problemas que lo hacen enlazado de E / S ... o aumentar el ancho de banda de E / S de su sistema.