Posted on 2010-08-27 17:48
Mercy 閱讀(2147)
評論(8) 編輯 收藏 所屬分類:
《深入Java并發(fā)》
Author : mercyblitz
Version: 0.1
Update : 2010-08-27 4:26PM
Email: mercyblitz@gmai.com
1. 基礎(chǔ)
1.1 摩爾定律
1.2 多處理器時代
1.2.1 對稱多處理( Symmetric Multi-Processor, a.k.a SMP)
1.2.2 非對稱多處理( ASymmetric Multi-Processor, a.k.a ASMP)
1.2.3 非統(tǒng)一內(nèi)存訪問( a.k.a NUMA)
1.3 共享內(nèi)存(Shared Memory)
1.4 CPU 緩存
1.4.1 緩存一致性(Cache coherence)
1.4.2 MESI協(xié)議(MESI protocol)
1.5 線程
1.5.1 起源(Source)
1.5.2 優(yōu)勢(Advantages)
1.5.3 類型(Types)
1.5.4 模型(Models)
1.5.5 實現(xiàn)(Implementations)
1.5.6 安全(Security)
1.6 內(nèi)存模型 (Memory Model)
1.6.1 可見性(Visibility)
1.6.2 原子性(Atomicity)
1.6.3 順序性(Order)
1.7 互斥( Mutual Exclusion)
1.7.1 阻塞同步( Blocking Synchronization)
1.7.1.1 臨界區(qū)(Critical Section)
1.7.1.2 鎖(Lock)
1.7.1.2.1 類型(Types)
1.7.1.2.1.1 自旋鎖(Spinning Lock)
1.7.1.2.1.2 標(biāo)簽鎖(Ticket Lock)
1.7.1.2.1.3 偏向鎖(Biased Lock)*
1.7.1.2.2 數(shù)據(jù)庫鎖(Database Lock)*
1.7.1.2.2.1 消極鎖
1.7.1.2.2.2 樂觀鎖
1.7.1.2.3 問題(Problems)
1.7.1.2.3.1 活鎖(Live Lock)
1.7.1.2.3.2 死鎖(Dead Lock)
1.7.1.2.3.3 優(yōu)先級倒置(Priority Inversion)
1.7.1.2.3.4 其他(Others)
1.7.2 非阻塞同步(Non-Blocking Synchronization)
1.7.2.1 Wait-free算法
1.7.2.1.1 比較交換算法(Compare-And-Swap, a.k.a CAS)
1.7.2.1.2 連接加載/條件存儲(Load-link/Store-conditional)
1.7.2.1.3 ABA問題
1.7.2.2 Lock-free
1.7.2.3 Obstruction-free
1.7.3 重進(jìn)入(Reentrant)
1.7.4 監(jiān)視器(Monitor)
1.7.4.1 等待和信號(Wait and Signal)
1.7.4.2 條件變量(Condition Variable)
1.7.5 信號燈(Semaphore)
1.7.6 雙檢查鎖(Double-Checked Locking, a.k.a DCL)
1.8 內(nèi)存柵欄(Memory Barrier/Fence)
1.9 一致性模型(Consistency Model)
1.9.1 原子一致性( Atomic consistency)
1.9.2 連續(xù)一致性(Sequential Consistency)
1.9.3 因果一致性(Causal Consistency)
1.9.4 釋放一致性(Release Consistency)
1.9.5 最終一致性(Eventual Consistency)
1.9.6 Delta一致性(Delta Consistency)
1.9.7 弱一致性(Weak Consistency)
1.10 并發(fā)控制(Concurrency Control)
1.10.1 軟件事務(wù)存儲(Software Transactional Memory,a.k.a STM)
2. Java 基礎(chǔ)
2.1 Java同步原語
2.1.1 synchronized關(guān)鍵字
2.1.2 volatile 關(guān)鍵字
2.1.3 CAS操作-AtomicX
2.2 Java內(nèi)存模型
2.2.1 可見性(Visibility)
2.2.2 原子性(Atomicity)
2.2.3 順序性(Order)
2.2.4 Happens-Before
2.3 java.lang.Thread
2.3.1 狀態(tài)(State)
2.3.2 啟動-Thread.start方法
2.3.3 棄用Thread.stop, Thread.suspend 和 Thread.resume方法
2.3.4 終止Thread.interrupt和Thread.interrupted方法
2.3.5 Thread.join方法
2.3.6 Object.wait/notify方法
2.3.7 Thread.wait方法
3. Java并發(fā)框架
3.1J.U.C框架
3.1.1 同步
3.1.1.1 核心-AbstractQueuedSynchronizer
3.1.1.2 重進(jìn)入鎖-ReentrantLock
3.1.1.3 重進(jìn)入讀寫鎖-ReentrantReadWriteLock
3.1.1.4 條件變量-Condition
3.1.1.5 新通知/信號機(jī)制-LockSupport
3.1.2 限制
3.1.2.1 CountDownLatch
3.1.2.2 CyclicBarrier
3.1.2.3 信號燈(Semaphore)
3.1.3 原子操作
3.1.3.1 Atomic*類
3.1.3.2 操作實現(xiàn)-sun.misc.Unsafe
3.1.4 線程安全集合
3.1.4.1 CopyOnWriteArrayList和CopyOnWriteArraySet
3.1.4.2 ConcurrentSkipListMap和ConcurrentSkipListSet
3.1.4.3 ConcurrentHashMap
3.1.4.4 ArrayBlockingQueue
3.1.4.5 LinkedBlockingQueue和ArrayBlockingDueue
3.1.4.5 PriorityBlockingQueue
3.1.5 線程池
3.1.5.1 Executor
3.1.5.2 ThreadPoolExecutor
3.1.5.3 Callable和Future
3.1.5.4 ScheduledExecutorService
3.1.5.5 Executors
4. JVM并發(fā)實現(xiàn) **
4.1 線程(Thread)實現(xiàn)
4.2 監(jiān)視器(Monitor)實現(xiàn)
4.3 可見性實現(xiàn)
4.4 原子性實現(xiàn)
4.5 順序性實現(xiàn)
4.6 其他
說明:
1. 在標(biāo)題后面帶有符號“*”,代表這個內(nèi)容可能有點于偏離主題。帶有“**”的內(nèi)容,可能比較難以理解。
2. 由于知識體系比較繁雜,組織起來比較寬難,因此目錄結(jié)構(gòu)很有可能不斷地更新。該文章的Update部分或者標(biāo)題也會同步更新。
3.一旦章節(jié)的內(nèi)容完結(jié),目錄會即時更新鏈接,請大家留意。
4.作者能力和學(xué)識有限,如果讀者還有更加感興趣的議題,或者任何錯誤、意見和建議,不妨直接留言或者發(fā)郵件來討論。如果能夠合著的話,那是更加完美了。
5.文章轉(zhuǎn)載前,請聯(lián)系文章的作者。
謝謝
,EOF!