2012-08-30 8 views
8

Mam kilka runnables Chcę uruchomić w wielu wątków, a niektóre zależą od innych, aby zakończyć, zanim zaczną. Napisałem proste narzędzie do tego, ale czy istnieje biblioteka, która już zapewnia taką możliwość?Czy istnieje biblioteka Java dla planowania zależnych runnables (podane w DAG zależności)?

+0

Czy procesowy silnik taki jak [tag: activiti] czy [tag: jbpm] jest dla ciebie przesadą? –

+0

Java3D ma coś takiego w tym, ale nie wiem gdzie –

+0

@ Tom, dzięki za wskazówki. Tak, to prawdopodobnie przesada. – jonderry

Odpowiedz

2

Można użyć CountDownLatch aby koordynować rodzajów zajęć wątków

+0

Przydatna odpowiedź, choć nie zapewnia ona prostego interfejsu do uruchamiania zadań zależnych. – jonderry

+0

Wydaje się, że jest to dość prosty problem, który sprawi, że twój własny system nie będzie zbyt zły (a jakakolwiek inna biblioteka będzie przesadna). Wdrożyłbym go, mając jedną klasę, która działa jak "węzeł" - opakowuje Runnable i zna jego zależności i zależności, a także ma "CountDownLatch" do koordynacji. Następnie inna klasa, która weźmie ich w garść, obliczy całkowitą kolejność nad nimi i poda je Executorowi w tej kolejności (aby zapobiec zakleszczeniu). –

1

„niektóre zależą od innych, aby zakończyć, zanim zaczną”.

Zakładam, że oznacza to, że niektóre zadania wykorzystują wyniki innych zadań jako argumenty wejściowe. Jeśli tak, szukaj "java dataflow" lub "java workflow".

Jeśli argumenty wejściowe dla każdego zadania mogą być reprezentowane za pomocą pojedynczej kolejki, ten specjalny rodzaj przepływu danych jest znany jako "Model aktora", więc wyszukaj "bibliotekę lub framework programu java actor".

W szczególności mój otwarty projekt min. df4j obsługuje style przepływu danych i aktorów.

Powiązane problemy