2012-08-30 14 views
8

Tengo un montón de ejecutables que quiero ejecutar en varios subprocesos y algunos dependen de otros para completarse antes de que comiencen. Escribí una utilidad simple para hacer esto, pero ¿hay una biblioteca que ya brinde esta capacidad?¿Existe una biblioteca java para programar ejecutables dependientes (dada en un DAG de dependencia)?

+0

¿Es el motor de proceso como [tag: activiti] o [tag: jbpm] una exageración para usted? –

+0

Java3D tiene algo como esto, pero no sé dónde –

+0

@Tomasz, gracias por los punteros. Sí, esos son probablemente excesivos. – jonderry

Respuesta

2

Puede utilizar un CountDownLatch para coordinar las actividades de las discusiones

+0

Respuesta útil, aunque no proporciona una API sencilla para ejecutar tareas dependientes. – jonderry

+0

Esto parece un problema bastante simple que rodar su propio sistema no sería tan malo (y cualquier otra biblioteca va a ser exagerada). Lo implementaría teniendo una clase que actúa como un "nodo": envuelve Runnable, y conoce sus dependencias y dependientes, y también tiene un 'CountDownLatch' para la coordinación. Luego, otra clase para tomar un montón de estos, calcular un total de pedidos sobre ellos, y alimentarlos a un Ejecutor en ese orden (para evitar un punto muerto). –

1

"algunos dependen de otros para completar antes de que comiencen".

Supongo que esto significa que algunas tareas usan resultados de otras tareas como argumentos de entrada. Si es así, busque "flujo de datos java" o "flujo de trabajo java".

Si los argumentos de entrada para cada tarea se pueden representar con una única cola secuencial, este tipo especial de flujo de datos se conoce como "modelo Actor", por lo que busque "java actor library or framework".

En particular, un proyecto de código abierto mío df4j es compatible tanto con el flujo de datos como con los estilos de actor.

Cuestiones relacionadas