對于并發(fā)編程,除了操作系統(tǒng)課上學(xué)的那點知識,我的實踐很少。
本科時的實踐,一個是用在聊天小程序上,一個線程收,一個線程發(fā);還有是寫界面程序時,GUI單獨一個線程。僅此而已。
后來接觸node.js 和redis, 了解了一些事件驅(qū)動的單線程并發(fā)模型。對于并發(fā)編程,比如如何用好多線程、鎖、同步之類的,也挺好奇的,哈,我覺得這是一個提高自己的好方向。
第一本看的書是《Seven Concurrency Models in Seven Weeks》英文版PDF,即《七周七并發(fā)模型》, 互動出版網(wǎng)上也有中文翻譯版賣。(嘿嘿,在互動出版網(wǎng)上買了我的第一本計算機書,《算法導(dǎo)論》)
這本書還是蠻不錯的,起碼給了我一個基本認識,還接觸了一點函數(shù)式編程語言Clojure,認識了一點go、erlang的特性。
具體內(nèi)容就不說了,感興趣可以看看。這里列一下章節(jié)目錄:
- Introduction
- Threads and Locks
- Functional Programming
- The Clojure Way—Separating Identity from State
- Actors
- Communicating Sequential Processes
- Data Parallelism
- The Lambda Architecture
每章分為3Day, 一周。
第二本書是實習(xí)時開始看的,只看了一半,還在看,叫《Java.Concurrency.in.Practice》。
據(jù)說這書經(jīng)典,但是我看文字太多了,圖比較少,似乎不太直觀。此書談到的問題還是很實用的,包含Java的內(nèi)存模型,什么線程安全、內(nèi)存可見性、同步方式、線程池、阻塞中斷等等,還有 java.util.concurrent包里很多類的使用方法等等。
推薦:
并發(fā)編程網(wǎng) http://ifeve.com/
InfoQ: http://www.infoq.com/cn
很多知識知道是知道一點,但是沒有去用,總徘徊在門外。只有心里有興趣,有很大疑惑,或者需要的時候才會去看。
有相關(guān)項目,一邊做一邊學(xué),沒事看看java.util.concurrent里一些類的實現(xiàn)方式,設(shè)計思路,也蠻不錯的。