2012-08-30 17 views
8

Ho un sacco di runnables che voglio eseguire in più thread e alcuni dipendono da altri da completare prima di iniziare. Ho scritto una semplice utility per farlo, ma c'è una libreria che già fornisce questa funzionalità?Esiste una libreria java per la pianificazione dei runnables dipendenti (fornita in un DAG di dipendenza)?

+0

Il motore di elaborazione come [tag: activiti] o [tag: jbpm] è eccessivo per te? –

+0

Java3D ha qualcosa del genere, ma non so dove sia –

+0

@Tomasz, grazie per i suggerimenti. Sì, quelli sono probabilmente esagerati. – jonderry

risposta

2

È possibile utilizzare un CountDownLatch per coordinare le attività di fili

+0

Risposta utile, anche se non fornisce una semplice API per eseguire attività dipendenti. – jonderry

+0

Questo sembra un problema abbastanza semplice che il rollover del proprio sistema non sarebbe male (e qualsiasi altra libreria sarà eccessiva). Lo implementerei avendo una classe che agisce come un "nodo" - racchiude un Runnable, e conosce le sue dipendenze e dipendenze, e ha anche un "CountDownLatch" per il coordinamento. Poi un'altra classe ne prenderà un mucchio, calcolerà un ordinamento totale su di loro e li fornirà ad un Executor in quell'ordine (per evitare un deadlock). –

1

"alcuni dipendono da altri per completare prima di iniziare".

Presumo che questo significhi che alcune attività utilizzano i risultati di altre attività come argomenti di input. In tal caso, cercare "java dataflow" o "java workflow".

Se gli argomenti di input per ciascuna attività possono essere rappresentati con una singola coda sequenziale, questo tipo speciale di flusso di dati è noto come "Modello attore", quindi cercare "libreria o framework di attori Java".

In particolare, un progetto opensource di mine df4j supporta entrambi gli stili di flusso di dati e attore.

Problemi correlati