亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺談Java中Lock和Synchronized的區(qū)別

 更新時(shí)間:2022年04月28日 16:37:35   作者:請(qǐng)叫我黃同學(xué)  
這篇文章主要介紹了Java中Lock和Synchronized的區(qū)別,Lock和Synchronized都是java中去用來(lái)解決線(xiàn)程安全問(wèn)題的一個(gè)工具,但是具體有什么區(qū)別呢?下面我們一起進(jìn)入文章了解具體詳細(xì)內(nèi)容吧,需要的朋友可以參考一下

1. 從功能角度來(lái)看

LockSynchronized都是java中去用來(lái)解決線(xiàn)程安全問(wèn)題的一個(gè)工具

2. 從特性來(lái)看

Synchronized是java中的同步關(guān)鍵字,Lock是J.U.C包中提供的接口,而這個(gè)接口有很多的實(shí)現(xiàn)類(lèi),包括ReentrantLock這樣重入鎖的實(shí)現(xiàn),Synchronized可以通過(guò)兩種方式去控制鎖的力度

 一種把synchronized關(guān)鍵字修飾在方法層面,另一種是修飾在代碼塊上,可以通過(guò)synchronized加鎖對(duì)象的生命周期,來(lái)控制鎖的作用范圍,鎖對(duì)象是靜態(tài)對(duì)象或者是類(lèi)對(duì)象,那么這個(gè)鎖就是屬于全局鎖,如果鎖對(duì)象是普通實(shí)例對(duì)象,那么這個(gè)鎖的范圍取決于這個(gè)實(shí)例的生命周期,Lock中鎖的粒度是通過(guò)它里面提供的lock()方法和unlock()方法來(lái)決定的

 如上圖:在lock()方法和unlock()方法之間的代碼,是能夠保證線(xiàn)程安全的,而鎖的作用域 取決于Lock實(shí)例的生命周期。Lock比Synchronized的靈活性更高,Lock可以自主的去決定什么時(shí)候加鎖,什么時(shí)候釋放鎖,只需要調(diào)用lock()unlock這兩個(gè)方法就可以了,Lock還提供了非阻塞的競(jìng)爭(zhēng)鎖的方法,叫tryLock(),這個(gè)方法可以通過(guò)返回true/false來(lái)告訴當(dāng)前線(xiàn)程是否已經(jīng)有其他線(xiàn)程正在使用鎖,而Synchronized由于是關(guān)鍵字,所以它無(wú)法去實(shí)現(xiàn)非阻塞競(jìng)爭(zhēng)鎖的方法,Synchroized鎖的釋放是被動(dòng)的,當(dāng)Synchronized同步代碼塊,執(zhí)行結(jié)束以后,或者代碼出現(xiàn)異常的時(shí)候才會(huì)被釋放,Lock提供了公平鎖和非公平鎖的機(jī)制,公平鎖是指線(xiàn)程競(jìng)爭(zhēng)鎖資源的時(shí)候,已經(jīng)有其它線(xiàn)程正在排隊(duì),或者等待鎖釋放,那么當(dāng)前競(jìng)爭(zhēng)鎖的線(xiàn)程,是無(wú)法去插隊(duì)的,非公平鎖就是不管是否有線(xiàn)程在排隊(duì)等待鎖,它都會(huì)去嘗試去競(jìng)爭(zhēng)一次鎖,Synchronized只提供方了一種非公平鎖的實(shí)現(xiàn)。

3. 從性能方面來(lái)看

Synchronized和lock在性能方面相差不大,在實(shí)現(xiàn)上會(huì)有一定的區(qū)別,Synchronized引入了偏向鎖,輕量級(jí)鎖,重量級(jí)鎖以及鎖升級(jí)的機(jī)制來(lái)實(shí)現(xiàn)鎖的優(yōu)化,而Lock中則用到了自旋鎖的方式去實(shí)現(xiàn)性能優(yōu)化

到此這篇關(guān)于淺談Java中LockSynchronized的區(qū)別的文章就介紹到這了,更多相關(guān)LockSynchronized的區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深度優(yōu)先與廣度優(yōu)先Java實(shí)現(xiàn)代碼示例

    深度優(yōu)先與廣度優(yōu)先Java實(shí)現(xiàn)代碼示例

    這篇文章主要介紹了深度優(yōu)先與廣度優(yōu)先Java實(shí)現(xiàn)代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • mybatis-plus IdWorker生成的Id和返回給前臺(tái)的不一致的解決

    mybatis-plus IdWorker生成的Id和返回給前臺(tái)的不一致的解決

    這篇文章主要介紹了mybatis-plus IdWorker生成的Id和返回給前臺(tái)的不一致的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Java如何基于wsimport調(diào)用wcf接口

    Java如何基于wsimport調(diào)用wcf接口

    這篇文章主要介紹了Java如何基于wsimport調(diào)用wcf接口,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • java中壓縮文件并下載的實(shí)例詳解

    java中壓縮文件并下載的實(shí)例詳解

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于java中壓縮文件并下載的實(shí)例詳解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-02-02
  • 解析使用jdbc,hibernate處理clob/blob字段的詳解

    解析使用jdbc,hibernate處理clob/blob字段的詳解

    本篇是對(duì)使用jdbc,hibernate處理clob/blob字段進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • springboot配置允許循環(huán)依賴(lài)問(wèn)題

    springboot配置允許循環(huán)依賴(lài)問(wèn)題

    這篇文章主要介紹了springboot配置允許循環(huán)依賴(lài)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Java使用正則表達(dá)式實(shí)現(xiàn)找出數(shù)字功能示例

    Java使用正則表達(dá)式實(shí)現(xiàn)找出數(shù)字功能示例

    這篇文章主要介紹了Java使用正則表達(dá)式實(shí)現(xiàn)找出數(shù)字功能,結(jié)合實(shí)例形式分析了Java針對(duì)數(shù)字的匹配查找及非數(shù)字替換操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-03-03
  • java實(shí)現(xiàn)簡(jiǎn)單斗地主(看牌排序)

    java實(shí)現(xiàn)簡(jiǎn)單斗地主(看牌排序)

    這篇文章主要介紹了java實(shí)現(xiàn)簡(jiǎn)單斗地主,看牌進(jìn)行排序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2010-11-11
  • Spring AOP失效的常見(jiàn)場(chǎng)景分析

    Spring AOP失效的常見(jiàn)場(chǎng)景分析

    Spring的AOP(面向切面編程)是一種強(qiáng)大的技術(shù),用于在應(yīng)用程序中實(shí)現(xiàn)橫切關(guān)注點(diǎn)的模塊化,雖然Spring的AOP在大多數(shù)情況下都是有效的,但在某些場(chǎng)景下可能會(huì)失效,下面來(lái)分析Spring AOP失效的常見(jiàn)場(chǎng)景,需要的朋友可以參考下
    2024-01-01
  • ElasticSearch添加索引代碼實(shí)例解析

    ElasticSearch添加索引代碼實(shí)例解析

    這篇文章主要介紹了ElasticSearch添加索引代碼實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04

最新評(píng)論