面试-synchronized和ReentrantLock的区别

从以下五个点答就行。

(1)synchronized是独占锁,加锁和解锁的过程自动进行,易于操作,但不够灵活。

ReentrantLock也是独占锁,加锁和解锁的过程需要手动进行,不易操作,但非常灵活。

(2)synchronized可重入,因为加锁和解锁自动进行,不必担心最后是否释放锁;

ReentrantLock也可重入,但加锁和解锁需要手动进行,且次数需一样,否则其他线程无法获得锁。

(3)synchronized不可响应中断,一个线程获取不到锁就一直等着;

ReentrantLock可以相应中断。

(4)ReentrantLock可以实现公平锁,synchronized不可以。

(5)synchronized是jvm层面的,ReentrantLock是写出来的API,效率会低一点。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章