有朋友問過我,怎樣學習多線程編程,我總結了一下,列了一下知識點:
1、synchronized
2、Runnable、Thread、Thread.sleep、Thread.yield、Thread.join
3、wait、notify、notifyAll(注意其中鎖的獲得和釋放)
4、Mutex、Semaphore
5、BlockingQueue (十分有用,必須掌握)
6、ThreadPool
7、ExecutorService
8、Future (十分重要,必須掌握)
9、ReadWriteLock
10、Lock、condition。這是很多線程庫都包含的內容,概念和synchronized、object.wait、object.notify那套咚咚類似,不過是通過庫的方式展現,更加靈活。
、死鎖、哲學家就餐問題
12、TSL匯編指令、JDK 1.5中的compareAndSet(java.uti.concurrent.atomic)、Windows API中的InterLock
13、工作線程+請求隊列的應用
14、用戶線程、內核線程,fork時用戶線程問題 (很多Unix和早期的Linux不支持內核線程)
15、Windows Thread API,特色API:WaitForMultiObject
相關的書籍有:
《JAVA多線程設計模式》 結城浩 中國鐵道出版社 (這本書講得很清楚形象,十分適合初學者閱讀)
JAVA并發編程—設計原則與模式(第二版) Doug Lea 中國電力出版社 (不可以不看,同時要配合閱讀util.concurrent包的源碼或者JDK 1.5的源碼)
《JAVA線程編程》 Paul Hyde 人民郵電出版社 (我覺得這本書也不錯)
《POSIX多線程程序設計》 David R.Butenhof 中國電力出版社
《WINDOWS核心編程》 Jeffrey Richter 機械工業出版社
《UNIX系統編程》 Kay A.Robbins, Steve Robbins 機械工業出版社
《現代操作系統》 Andrew S.Tanenbaum 機械工業出版社
《UNIX 網絡編程(第二版)第2卷:進程間通信》W.Richard Stevens 北京科海電子出版社

文章來源:
http://jobs.cnblogs.com/archive/2006/01/09/313535.html