手寫中間件之——並行框架(2 任務編排順序如何選型和實現)

這一篇我們就要開始手寫這個並行框架了。

做任何一個項目,都要做的事情都是先定大框架,後拆解任務。

那麼這個併發框架,要完成上一篇講的那些所有任務,該如何定大框架呢,如何選型呢?

如果大家仔細看了上一篇文章,可以看到該框架的難點和重點,主要有兩點,分別是任務的順序編排任務結果的回調。

如何做任務順序編排

依次來看一下各個基本場景

1 全串行

這種是最簡單的,依次串行即可。

假如有3個任務,譬如每個任務由一個worker來完成,共計3個worker,這3個worker有明顯的先後順序。要描述這種依賴關係和前後順序,我們對任務的包裝類應該至少有兩個屬性,nextWrappers和dependWrappers。分別代表我這個任務的後面的任務和依賴的任務。

以B爲例,nextWrapper就是C,dependWrapper就是A。

2 全並行

這種也很簡單,也比較常見。全並行的實現方式很多,譬如可以將所有的worker放到list裏,寫個for循環依次start;也可以全部提交到線程池裏;也可以用CompleteableFuture.supply()去接收多個worker任務。

3 先串後並

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章