概念
- synchronized,翻譯同步,俗稱內置鎖
- ReentrantLock,Re-entrant-Lock,俗稱重入鎖,顯示鎖
synchronized的使用
- 當synchronized作用于普通方法是,鎖對象是this;
- 當synchronized作用于靜態方法是,鎖對象是當前類的Class對象;
- 當synchronized作用于代碼塊時,鎖對象是synchronized(obj)中的這個obj。
相同點
- 互斥性
- 內存可見性
- 可以重入(只是針對ReentrantLock)
不同點
- ReentrantLock實現Lock接口,需要顯示的加鎖和解鎖
- ReentrantLock提供了非阻塞獲取鎖的方式,tryLock()
- ReentrantLock提供了超時獲取鎖的方式,tryLock(long timeout, TimeUnit unit)
- ReentrantLock能被中斷的獲取鎖的方式,lockInterruptibly()
性能對比
- 在jdk5,并發量超過64,性能對比為4
- 在jdk5,并發量超過64,性能對比為1.x