最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中Synchronized和Static?Synchronized的區(qū)別及說(shuō)明

 更新時(shí)間:2025年05月16日 16:40:21   作者:二六八  
這篇文章主要介紹了Java中Synchronized和Static?Synchronized的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Synchronized和Static Synchronized的區(qū)別

synchronized 是對(duì)類的當(dāng)前實(shí)例進(jìn)行加鎖,防止其他線程同時(shí)訪問(wèn)該類的該實(shí)例的所有synchronized塊,注意這里是 “類的當(dāng)前實(shí)例” , 類的兩個(gè)不同實(shí)例就沒(méi)有這種約束了。

那么 static synchronized 恰好就是要控制類的所有實(shí)例的訪問(wèn)了, static synchronized 是限制線程同時(shí)訪問(wèn)jvm中該類的所有實(shí)例同時(shí)訪問(wèn)對(duì)應(yīng)的代碼塊。

一個(gè)日本作者-結(jié)成浩的《java多線程設(shè)計(jì)模式》

一個(gè)列子

pulbic class Something(){
    public synchronized void isSyncA(){}
    public synchronized void isSyncB(){}
    public static synchronized void cSyncA(){}
    public static synchronized void cSyncB(){}

那么,加入有Something類的兩個(gè)實(shí)例a與b

下列組方法何以被1個(gè)以上線程同時(shí)訪問(wèn)呢

a. x.isSyncA()與x.isSyncB() 
b. x.isSyncA()與y.isSyncA()
c. x.cSyncA()與y.cSyncB()
d. x.isSyncA()與Something.cSyncA()
  • a . 都是對(duì)同一個(gè)實(shí)例的synchronized域訪問(wèn),因此不能被同時(shí)訪問(wèn)
  • b . 是針對(duì)不同實(shí)例的,因此可以同時(shí)被訪問(wèn)
  • c . 因?yàn)槭?code>static synchronized,所以不同實(shí)例之間仍然會(huì)被限制,相當(dāng)于Something.isSyncA()Something.isSyncB()了,因此不能被同時(shí)訪問(wèn)。
  • d . 可以被同時(shí)訪問(wèn)的,理由是synchronzied的是實(shí)例方法與synchronzied的類方法由于鎖定(lock)不同的原因。

說(shuō)下結(jié)論:

  • A: synchronized static是某個(gè)類的范圍,synchronized static cSync{}防止多個(gè)線程同時(shí)訪問(wèn)這個(gè) 類中的synchronized static 方法。它可以對(duì)類的所有對(duì)象實(shí)例起作用。
  • B: synchronized 是某實(shí)例的范圍,synchronized isSync(){}防止多個(gè)線程同時(shí)訪問(wèn)這個(gè)實(shí)例中的synchronized 方法。

總結(jié)

有如下幾點(diǎn):

  1. 對(duì)象鎖鑰匙只能有一把才能互斥,才能保證共享變量的唯一性
  2. 在靜態(tài)方法上的鎖,和 實(shí)例方法上的鎖,默認(rèn)不是同樣的,如果同步需要制定兩把鎖一樣。
  3. 關(guān)于同一個(gè)類的方法上的鎖,來(lái)自于調(diào)用該方法的對(duì)象,如果調(diào)用該方法的對(duì)象是相同的,那么鎖必然相同,否則就不相同。比如 new A().x()new A().x(),對(duì)象不同,鎖不同,如果A的單利的,就能互斥。
  4. 靜態(tài)方法加鎖,能和所有其他靜態(tài)方法加鎖的 進(jìn)行互斥。
  5. 靜態(tài)方法加鎖,和xx.class 鎖效果一樣,直接屬于類的。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java 內(nèi)存溢出的原因和解決方法

    Java 內(nèi)存溢出的原因和解決方法

    這篇文章主要介紹了Java 內(nèi)存溢出的原因和解決方法,幫助大家更好的維護(hù)Java程序,保持穩(wěn)定性,感興趣的朋友可以了解下
    2020-12-12
  • SpringBoot使用Mybatis-Plus中分頁(yè)插件PaginationInterceptor詳解

    SpringBoot使用Mybatis-Plus中分頁(yè)插件PaginationInterceptor詳解

    文章介紹SpringBoot高版本中使用MyBatisPlusInterceptor替代舊分頁(yè)插件,需配置多個(gè)InnerInterceptor功能模塊(如分頁(yè)、多租戶、動(dòng)態(tài)表名等),并強(qiáng)調(diào)插件順序和mapper.xml中SQL語(yǔ)句不能以分號(hào)結(jié)尾,以避免分頁(yè)語(yǔ)法錯(cuò)誤
    2025-07-07
  • Mybatis分頁(yè)的實(shí)現(xiàn)及使用注解開(kāi)發(fā)操作

    Mybatis分頁(yè)的實(shí)現(xiàn)及使用注解開(kāi)發(fā)操作

    這篇文章主要介紹了Mybatis分頁(yè)的實(shí)現(xiàn)及使用注解開(kāi)發(fā)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • tomcat請(qǐng)求流程源碼解進(jìn)階篇

    tomcat請(qǐng)求流程源碼解進(jìn)階篇

    這篇文章主要為大家介紹了tomcat請(qǐng)求流程源碼解進(jìn)階,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • java實(shí)現(xiàn)水仙花數(shù)的計(jì)算

    java實(shí)現(xiàn)水仙花數(shù)的計(jì)算

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)水仙花數(shù)的計(jì)算,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Java并發(fā)編程包中atomic的實(shí)現(xiàn)原理示例詳解

    Java并發(fā)編程包中atomic的實(shí)現(xiàn)原理示例詳解

    這篇文章主要給大家介紹了關(guān)于Java并發(fā)編程包中atomic的實(shí)現(xiàn)原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • Java HashMap底層實(shí)現(xiàn)原理

    Java HashMap底層實(shí)現(xiàn)原理

    HashMap在不同的JDK版本下的實(shí)現(xiàn)是不同的,在JDK1.7時(shí),HashMap 底層是通過(guò)數(shù)組+鏈表實(shí)現(xiàn)的;而在JDK1.8時(shí),HashMap底層是通過(guò)數(shù)組+鏈表或紅黑樹(shù)實(shí)現(xiàn)的,本詳細(xì)介紹了HashMap底層是如何實(shí)現(xiàn)的,需要的朋友可以參考下
    2023-05-05
  • 用Java打造簡(jiǎn)易計(jì)算器的實(shí)現(xiàn)步驟

    用Java打造簡(jiǎn)易計(jì)算器的實(shí)現(xiàn)步驟

    這篇文章主要介紹了如何設(shè)計(jì)和實(shí)現(xiàn)一個(gè)簡(jiǎn)單的Java命令行計(jì)算器程序,該程序能夠執(zhí)行基本的數(shù)學(xué)運(yùn)算(加、減、乘、除),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-01-01
  • java的Map集合中按value值進(jìn)行排序輸出的實(shí)例代碼

    java的Map集合中按value值進(jìn)行排序輸出的實(shí)例代碼

    下面小編就為大家?guī)?lái)一篇java的Map集合中按value值進(jìn)行排序輸出的實(shí)例代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-08-08
  • Spring定時(shí)任務(wù)@Scheduled注解(cron表達(dá)式fixedRate?fixedDelay)

    Spring定時(shí)任務(wù)@Scheduled注解(cron表達(dá)式fixedRate?fixedDelay)

    這篇文章主要為大家介紹了Spring定時(shí)任務(wù)@Scheduled注解(cron表達(dá)式fixedRate?fixedDelay)使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11

最新評(píng)論

托克逊县| 滨州市| 台南县| 平和县| 淮阳县| 敦煌市| 观塘区| 新源县| 龙陵县| 申扎县| 高台县| 三台县| 广昌县| 漳浦县| 基隆市| 册亨县| 威海市| 彰化市| 怀集县| 南京市| 策勒县| 公安县| 北京市| 万载县| 武强县| 马关县| 日照市| 页游| 德兴市| 广河县| 滕州市| 轮台县| 故城县| 宁都县| 西安市| 浮梁县| 成都市| 宜君县| 花莲市| 伊金霍洛旗| 内江市|