2016-04-26 27 views
0

我需要實現兩個級別的並行性,即組件級別和節點級別。如下圖所示,每個組件可能包含多個節點,其中每個節點應由不同的線程處理。假設組件是獨立的。請告訴我如何在java編程語言中實現這兩個級別的並行性。如何在java中實現兩級並行性

enter image description here

+1

你到目前爲止嘗試了什麼?你讀過關於線程和線程組嗎? – Thomas

+0

是的,我知道一些Java線程庫,如ExecutorService,Forkjoin和。 。 。你認爲線程組是什麼意思? – nasim

+0

我在引用'java.lang.ThreadGroup'。從JavaDoc:'線程組形成一棵樹,其中除了最初的線程組以外的每個線程組都有一個父節點。「 - 你做什麼取決於你:) – Thomas

回答

3

你畫什麼我看來像被分派工作到子線程的線程。

有很多(至少我能想到的四種)你可以用Java線程實現的方法。

  • 使用它創建/啓動/加入子線程
  • 使用老派線程池回收線程平原線程。
  • 使用執行程序。
  • 使用fork/join框架。

沒有更多信息對您的問題,我們不能建議哪個更好。或者確實如何使用線程。

我不認爲ThreadGroups對這個問題有任何幫助。


1 - 他們說,一張圖片勝過千言萬語......但是這並不適用於所有的圖片。你的圖表並沒有告訴我任何有關你的應用程序做什麼以及它應該如何工作。

+0

謝謝你的回答。我可以提供的其他信息是:我有一棵樹,我試圖並行處理每個級別的節點。我有每個層次中的粗粒度節點的小數目(每個級別最多32個節點)。我認爲Forkjoin不會是一個合適的解決方案(我認爲這對於細粒度的節點而言是很好的)。您能否提供更多關於其他方法(執行程序或純線程)的詳細信息?非常感謝您的幫助! – nasim

+0

Oracle Java教程和其他地方有很多細節。你不需要我的幫助來閱讀這些。另一個要點是對於計算密集型任務,您不會得到比物理內核/超線程更多的並行性。 –