原因:
- 1.硬體的驅動與網際網路發展之間的鴻溝越來越大。
- 2.多核的伺服器在不斷的發展。
- 3.大型網際網路廠商的系統併發量輕鬆過百萬,傳統的中介軟體和資料庫已經不能為我們遮風擋雨了,反而成了瓶頸所在。
如何學習併發程式設計
其實併發程式設計可以總結為三個核心問題:分工、同步、互斥。
- 分工:指的是如何高效地拆解任務並分配給執行緒
- 同步:指的是執行緒之間如何協作
- 互斥:保證同一時刻只允許一個執行緒訪問共享資源
Java SDK 併發包很大部分內容都是按照這三個維度組織的,例如Fork/Join框架就是一種分工模式,CountDownLatch就是一種典型的同步方式,而可重入鎖則是一種互斥手段。
當把併發程式設計核心的問題搞清楚,再回過頭來看看Java SDK 併發包,相信你會有條理的掌握,同時也不會迷茫了。
難點?
首先說明一下,併發程式設計,學起來十分枯燥乏味。因為這其中這其中涉及到作業系統、CPU、記憶體等等多方面的知識,因此,我們要堅持做下去、學下去的準備。