synchronized使用的內置鎖和ReentrantLock這種顯式鎖在java6以後性能沒多大差異,在更新的版本中內置鎖只會比顯式鎖性能更好。
這兩種鎖都是獨佔鎖,java5以前內置鎖性能低的原因是它沒做任何優化,直接使用系統的互斥體來獲取鎖。
顯式鎖除了CAS的時候利用的是本地代碼以外,其它的部分都是Java代碼實現的,在後續版本的Java中,顯式鎖不太可能會比內置鎖好,只會更差。使用顯式鎖的唯一理由是要利用它更多的功能
原子操作 part 3 指令重排序與happens-before法則
鎖機制 part 4 鎖釋放與條件變量 (Lock.unlock And Condition)
鎖機制 part 5 閉鎖 (CountDownLatch)
鎖機制 part 8 讀寫鎖 (ReentrantReadWriteLock) (1)
鎖機制 part 9 讀寫鎖 (ReentrantReadWriteLock) (2)
併發容器 part 5 ConcurrentLinkedQueue
併發容器 part 6 可阻塞的BlockingQueue (1)
併發容器 part 7 可阻塞的BlockingQueue (2)
併發容器 part 8 可阻塞的BlockingQueue (3)
併發容器 part 10 雙向併發阻塞隊列 BlockingDeque
併發容器 part 12 線程安全的List/Set CopyOnWriteArrayList/CopyOnWriteArraySet