學習方法
學習技術的方法都很相似,大部分都有着相似的步驟:算法
併發的目的
併發的維度
分工
- 線程池
- fork/join
- future
- Guarded Suspension 保護性暫掛模式
- Balking模式
- Thread per Message 模式
- 生產者-消費者模式
- Worker thread模式
- 兩階段終止模式
-其餘模式
同步/協做
- 信號量
- Monitor
-
-
- CountDownLatch
線程的5個狀態
線程的生命週期中,存在着如下幾個狀態:編程
- new:建立線程,此時只是一個對象,線程並無產生
- runnable:new以後的線程,經過start()方法開始,進入runnable 狀態。便可執行狀態,他是running狀態的預備狀態,等待cup的調度
- running:
- blocked:所阻塞狀態
- terminated:線程結束的狀態,致使緣由:
-
-
-
進程和線程的區別
進程是受操做系統管理的基本運行單元微信
線程是在進程中獨立運行的子任務多線程
進程間如何通信,線程間如何通信
多線程特色
- 能夠在同一時間內運行更多不一樣種類的任務
- 多線程是異步的
- 線程的調用是隨機的
測試上下文切換次數和時長
- Lmbench3 測試時長
- vmstat 測試切換次數
減小上下文切換
設計思想
模板模式
每一個線程Thread 步驟都是 start->run 其中run的實現細節由實現類決定,即模板模式併發
策略模式
接口只是定義(策略)的自己,實現子類能夠選擇不一樣的實現邏輯。異步
比如說:支付,接口我只定義支付pay這個方法,子實現類1能夠是支付寶支付的方式;子實現類2能夠是微信支付的方式;學習
在Thread類中,Thread的建立通常都是說有兩種,測試
- 一種是建立Thread,
- 一種是實現runnable接口。
- callable
其實本質上前者是重寫run方法,後者是實現runnable接口中的run(), 並把實例做爲構造Thread的參數
Runnable接口便是策略模式的體現
JDBC中 查詢微信支付