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