話說整理一下這些知識的效果還是很不錯的,一方面是意外的原因,《Java Puzzlers》閱讀中遇到了volatile的使用不清楚問題,在IBM developerworks上看了幾篇大牛的文章,越看牽扯到的東西越多,覺得自己掌握的東西很不系統,所以總結一下。另一方面的原因,現在實驗室的項目將涉及到大量的並發,算是先准備好。
在過去的實際項目中,java並發主要用在了游戲和輸入法的開發當中,其他時候都是自己寫點代碼,出於好奇做做實驗而已,因此也只是基礎性的總結了。大部分知識還是來自於《Thinking in java 4 edition》,內存模型的初步了解來自《Java Concurrency in Practice》這本書,這本書准備寒假結束后,全面仔細的讀一下。到時候對所有現在的總結應該會有更深的體會。
java對於並發提供非常強大的支持,但是並發的基本知識框架還是如下面所示:一個總結的基本思路就是首先弄清楚線程自身的管理控制,在不同的狀態之間進行轉換,然后是線程彼此之間的協作,並且由此產生了競爭條件等經典的問題。
下面就是這些天的一個總結清單: