2020久久超碰欧美精品最新亚洲欧美日韩久久精品,国产福利电影一区二区三区,亚洲欧美日韩一区在线观看,亚洲国产欧美日韩欧美特级,亚洲欧美日韩成人一区久久,欧美日韩精品一区二区三区不卡,国产欧美日韩va另类影音先锋,亚洲欧美日韩久久精品,亚洲欧美日韩国产成人精品影院,亚洲国产欧美日韩精品一区二区三区,欧美日韩国产成人高清视频,日韩久久精品国产免费观看频道,久久人人爽人人爽从片av高清,国产精品综合一区二区

首頁技術文章正文

Synchronized和Reentrantlock的區別有哪些?

更新時間:2020-12-08 來源:黑馬程序員 瀏覽量:

1577370495235_學IT就到黑馬程序員.gif

ReentrantLock是Lock的實現類,是一個互斥的同步鎖。從功能角度,ReentrantLock比Synchronized的同步操作更精細(因為可以像普通對象一樣使用),甚至實現Synchronized沒有的高級功能,如:

·等待可中斷:當持有鎖的線程長期不釋放鎖的時候,正在等待的線程可以選擇放棄等待,對處理執行時間非常長的同步塊很有用。

·帶超時的獲取鎖嘗試:在指定的時間范圍內獲取鎖,如果時間到了仍然無法獲取則返回。

·可以判斷是否有線程在排隊等待獲取鎖可以響應中斷請求與Synchronized不同,當獲取到鎖的線程被中斷時,能夠響應中斷,中斷異常將會被拋出,同時鎖會被釋放。

·可以實現公平鎖。

從鎖釋放角度, Synchronized在JVM層面上實現的,不但可以通過一些監控工具監控 Synchronized的鎖定,而且在代碼執行岀現異常時,JVM會自動釋放鎖定;但是使用Locκ則不行,Lock是通過代碼實現的,要保證鎖定一定會被釋放,就必須將unlock()放到finally{}中。

從性能角度,Synchronized早期實現比較低效,對比ReentrantLock,大多數場景性能都相差較大。但是在Java 6中對其進行了非常多的改進,在競爭不激烈時,Synchronized的性能要優于ReetrantLock;在高競爭情況下,Synchronized的性能會下降幾十倍,但是ReetrantLock的性能能維持常。



猜你喜歡

反射機制應用:DAO抽取通用層實現

ZooKeeper面試題和答案匯總

Dubbo相關面試題附答案

Java高級軟件工程師培訓課程

分享到:
在線咨詢 我要報名
和我們在線交談!