Java多線程模式

介紹以下多線程模式,這裏主要是列舉Java有哪些線程模式以及其主要的使用方式。詳情可閱讀《Java多線程模式》一書。

 

1Single Thread Execution——能通過這座橋的,只有一個人

該模式用鎖來保護關鍵的執行區域。

 

2,Immutable ——不可破壞的

Immutable類是指實例化之後狀態不再改變的類。

該模式可以在以下情況下考慮使用:確認類的實例狀態不會發生變化;實例需要共享,且訪問頻繁。

 

3,Guarded Suspension——先等我準備好

該模式的主要特徵是:正在wait的線程,期望當警戒條件成立的時候收到notify/notifyAll。

 

4,Balking——不需要的話就算了吧

該模式的主要特徵是“不等待”。當警戒條件不成立的時候,就直接退出,馬上進入下一個工作。

 

5,Producer-Consumer——我來做,你來用

生產者與消費者模式是多線程最經典的模式。生產者線程和消費者線程之間合作要想放在中間的東西,同步則要想應該保護的東西”。

 

6Read-Write Lock——想看就看,但看的時候不能寫

該模式適合讀任務繁重的時候

 

7,Thread-Per-Message—這個工作交給你了

對於耗時操作,交給新線程。

 

8,Worker Thread ——等到工作來,來了就工作

該模式與Thread-Per-Message模式的區別:啓動線程比較花時間,但需要頻繁的創建新線程去完成工作的時候,不如重複使用一個線程,保證資源的再利用。這個線程就是Worker Thread

另外,該模式的一個主題是服務量(承載量)-Worker ThreadRequest的數量之間的平衡。

 

9,Future ——先給您提貨單

該模式使用場景是,如果獲取某個值是一個耗時操作,則可以分離“準備返回值”和“使用返回值”。先給一個“準備返回值”,後續再獲取“使用返回值”。

 

10Two-Phase Termination——收拾好玩具去睡覺

線程的兩步終止法,在博客http://blog.csdn.net/luoxinwu123/article/details/7660625中有詳細介紹。

 

11,,Thread-Specialfic Storage——每個線程的保管箱

該模式是使用Thread_Local Storage(TLS)來保管線程的一些狀態。

12Active Object——接受異步消息的主動對象

主動對象一般指自己擁有獨立的線程,其特徵是:(1)異步接受外部傳來的請求;(2)可自由調度;(3)實際的處理由單線程運行;(4)可返回執行結果;(5)擁有獨立線程。

該模式組成元素很多,適合處理大規模的問題。

 

 

 

 

 

發佈了48 篇原創文章 · 獲贊 20 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章