Fork/Join模式(JSR166y)手記之Phaser
這是一個綜合了CountDownLatch和CyclicBarrier特性的混合體,官方說靈活性非常高。基本上,只要對上面兩個熟悉,那么閱讀API,也不難快速上手的。
yaofeng928 簡單總結其特點:
Phaser同時包含CyclicBarrier和CountDownLatch兩個類的功能。Phaser的arrive方法將將計數器加1,awaitAdvance將線程阻塞,直到計數器達到目標,這兩個方法與CountDownLatch的countDown和await方法相對應;Phaser的arriveAndAwaitAdvance方法將計數器加1的同時將線程阻塞,直到計數器達到目標后繼續執行,這個方法對應CyclicBarrier的await方法。
除了包含以上兩個類的功能外,Phaser還提供了更大的靈活性。CyclicBarrier和CountdownLatch在構造函數指定目標后就無法修改,而Phaser提供了register和deregister方法可以對目標進行動態修改。
yaofeng928在他的博客文章中也提供了測試示范,有興趣著看看一看。
在參考資料的第二個鏈接,則非常用心的給出對Phaser的用心解釋,絕對值得一看,不過其代碼存在些許錯誤,但對總體理解不產生障礙。
參考資料鏈接1則給出了,各種使用場景。
別人把自己所有想要理解的,基本都上說出來,不再需要單獨寫一篇,改成推薦好了。
posted on 2012-02-07 17:34 nieyong 閱讀(689) 評論(0) 編輯 收藏 所屬分類: Java