Lock與synchronzied相比的缺點(diǎn):
synchronized提供了便捷性的隱式獲取鎖釋放鎖機(jī)制(主要基于JVM機(jī)制)
Lock與synchronzied相比的優(yōu)點(diǎn):
- 與synchronized相比词裤,ReentrantLock提供了更多伪煤,更加全面的功能,具備更強(qiáng)的擴(kuò)展性邦蜜。例如:時(shí)間鎖等候,可中斷鎖等候究履,鎖投票川慌。
- ReentrantLock還提供了條件Condition,對(duì)線程的等待侣夷、喚醒操作更加詳細(xì)和靈活横朋,所以在多個(gè)條件變量和高度競(jìng)爭(zhēng)鎖的地方,ReentrantLock更加適合
- ReentrantLock提供了可輪詢的鎖請(qǐng)求百拓。它會(huì)嘗試著去獲取鎖琴锭,如果成功則繼續(xù),否則可以等到下次運(yùn)行時(shí)處理衙传,而synchronized則一旦進(jìn)入鎖請(qǐng)求要么成功要么阻塞决帖,所以相比synchronized而言,ReentrantLock會(huì)不容易產(chǎn)生死鎖些粪牲。
- ReentrantLock支持更加靈活的同步代碼塊古瓤,但是使用synchronized時(shí),只能在同一個(gè)synchronized塊結(jié)構(gòu)中獲取和釋放腺阳。注:ReentrantLock的鎖釋放一定要在finally中處理落君,否則可能會(huì)產(chǎn)生嚴(yán)重的后果。
- ReentrantLock支持中斷處理亭引,且性能較synchronized會(huì)好些绎速。