介紹以下多線程模式,這裏主要是列舉Java有哪些線程模式以及其主要的使用方式。詳情可閱讀《Java多線程模式》一書。
1、Single Thread Execution——能通過這座橋的,只有一個人
該模式用鎖來保護關鍵的執行區域。
2,Immutable ——不可破壞的
Immutable類是指實例化之後狀態不再改變的類。
該模式可以在以下情況下考慮使用:確認類的實例狀態不會發生變化;實例需要共享,且訪問頻繁。
3,Guarded Suspension——先等我準備好
該模式的主要特徵是:正在wait的線程,期望當警戒條件成立的時候收到notify/notifyAll。
4,Balking——不需要的話就算了吧
該模式的主要特徵是“不等待”。當警戒條件不成立的時候,就直接退出,馬上進入下一個工作。
5,Producer-Consumer——我來做,你來用
生產者與消費者模式是多線程最經典的模式。生產者線程和消費者線程之間合作要想“放在中間的東西”,同步則要想“應該保護的東西”。
6,Read-Write Lock——想看就看,但看的時候不能寫
該模式適合讀任務繁重的時候。
7,Thread-Per-Message—這個工作交給你了
對於耗時操作,交給新線程。
8,Worker Thread ——等到工作來,來了就工作
該模式與Thread-Per-Message模式的區別:啓動線程比較花時間,但需要頻繁的創建新線程去完成工作的時候,不如重複使用一個線程,保證資源的再利用。這個線程就是Worker Thread。
另外,該模式的一個主題是服務量(承載量)-既Worker Thread與Request的數量之間的平衡。
9,Future ——先給您提貨單
該模式使用場景是,如果獲取某個值是一個耗時操作,則可以分離“準備返回值”和“使用返回值”。先給一個“準備返回值”,後續再獲取“使用返回值”。
10,Two-Phase Termination——收拾好玩具去睡覺
線程的兩步終止法,在博客http://blog.csdn.net/luoxinwu123/article/details/7660625中有詳細介紹。
11,,Thread-Specialfic Storage——每個線程的保管箱
該模式是使用Thread_Local Storage(TLS)來保管線程的一些狀態。
12,Active Object——接受異步消息的主動對象
主動對象一般指自己擁有獨立的線程,其特徵是:(1)異步接受外部傳來的請求;(2)可自由調度;(3)實際的處理由單線程運行;(4)可返回執行結果;(5)擁有獨立線程。
該模式組成元素很多,適合處理大規模的問題。