欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

簡(jiǎn)單了解Java synchronized關(guān)鍵字同步

 更新時(shí)間:2019年09月29日 14:39:19   作者:shemlothae  
這篇文章主要介紹了簡(jiǎn)單了解Java synchronized關(guān)鍵字同步,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

 synchronized

synchronized可以用來(lái)同步塊,同步方法。同步塊可以用來(lái)更精確地控制對(duì)象鎖,控制鎖的作用域。(鎖的作用域就是從鎖的獲得到鎖的釋放的時(shí)間,而且可以選擇獲取哪個(gè)對(duì)象的鎖)。但是在使用同步塊機(jī)制時(shí),過(guò)多的使用鎖也會(huì)引發(fā)死鎖問(wèn)題,同時(shí)獲取和釋放也有代價(jià)。

而同步方法,它所擁有的就是該類(lèi)的對(duì)象,換句話(huà)說(shuō),就是this對(duì)象,而且鎖的作用域是整個(gè)方法,這可能導(dǎo)致鎖的作用域太大,有可能導(dǎo)致死鎖問(wèn)題。同時(shí)也可能包括了不需要同步的代碼塊在內(nèi),也會(huì)降低程序的運(yùn)行效率。

不管是同步方法還是同步塊,我們都不應(yīng)該在里面包含無(wú)限循環(huán),不然有可能導(dǎo)致獲得鎖之后,無(wú)限循環(huán)下去,無(wú)法釋放獲得的鎖資源,從而導(dǎo)致等待鎖的線(xiàn)程無(wú)法獲得,出現(xiàn)死鎖問(wèn)題。

同步方法

非靜態(tài)同步方法

所有的非靜態(tài)同步方法使用的都是同一把鎖----實(shí)例對(duì)象本身,也就是說(shuō)一個(gè)實(shí)例對(duì)象的非靜態(tài)方法獲得鎖之后,此對(duì)象的其他非靜態(tài)方法必須等待該方法釋放鎖之后才能獲取鎖,而這個(gè)類(lèi)的其他對(duì)象可以被獲取,其他對(duì)象的非靜態(tài)方法使用的是不同的鎖

靜態(tài)同步方法

所有的靜態(tài)同步方法使用的都是同一把鎖---該類(lèi)對(duì)象本身,這兩把鎖使用的是不同的對(duì)象,所以,類(lèi)的非靜態(tài)方法和靜態(tài)方法之間不存在鎖競(jìng)爭(zhēng)。但是一個(gè)類(lèi)的靜態(tài)方法之間存在鎖競(jìng)爭(zhēng),

同步塊

鎖是可以選擇的,所以只有存在同一把鎖的同步塊才存在鎖競(jìng)爭(zhēng),注意!同步塊的鎖是可以選擇的,但不是可以任意選擇的(使用一個(gè)引用對(duì)象的實(shí)例變量不是一個(gè)好的選擇,因?yàn)橥綁K在執(zhí)行過(guò)程中,可能會(huì)改變它的值,比如設(shè)置為null,而對(duì)一個(gè)null對(duì)象加鎖會(huì)發(fā)生異常,并且對(duì)不同的對(duì)象加鎖也違背了使用鎖的初衷)

同步是基于對(duì)象而不是基于引用的,多個(gè)變量可以引用一個(gè)對(duì)象,變量也可以改變引用的對(duì)象,因此,我們要根據(jù)實(shí)例對(duì)象而不是引用來(lái)考慮!作為一個(gè)原則!永遠(yuǎn)不要對(duì)一個(gè)可能再同步塊中改變其值的實(shí)例變量加鎖!??!

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中Map.entry的具體使用

    Java中Map.entry的具體使用

    Map.Entry?是Map中的一個(gè)接口,Map.Entry里有相應(yīng)的getKey和getValue方法,讓我們能夠從一個(gè)項(xiàng)中取出Key和Value,本文就詳細(xì)的介紹一下Map.entry的具體使用,感興趣的可以了解一下
    2023-05-05
  • SpringBoot整合aws的示例代碼

    SpringBoot整合aws的示例代碼

    本文通過(guò)實(shí)例代碼給大家介紹SpringBoot整合aws的全過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-12-12
  • 詳解Java使用Jsch與sftp服務(wù)器實(shí)現(xiàn)ssh免密登錄

    詳解Java使用Jsch與sftp服務(wù)器實(shí)現(xiàn)ssh免密登錄

    這篇文章主要介紹了詳解Java使用Jsch與sftp服務(wù)器實(shí)現(xiàn)ssh免密登錄,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • 分析java中全面的單例模式多種實(shí)現(xiàn)方式

    分析java中全面的單例模式多種實(shí)現(xiàn)方式

    單例模式是一種常用的軟件設(shè)計(jì)模式,單例對(duì)象的類(lèi)只能允許一個(gè)實(shí)例存在。許多時(shí)候整個(gè)系統(tǒng)只需要擁有一個(gè)的全局對(duì)象,有利于協(xié)調(diào)系統(tǒng)整體的行為。比如在某個(gè)服務(wù)器程序中,該服務(wù)器的配置信息存放在一個(gè)文件中。本文將介紹它的思想和多種實(shí)現(xiàn)方式
    2021-06-06
  • java調(diào)用通義千問(wèn)API的詳細(xì)完整步驟

    java調(diào)用通義千問(wèn)API的詳細(xì)完整步驟

    通義千問(wèn)是阿里云自主研發(fā)的大語(yǔ)言模型,能夠在用戶(hù)自然語(yǔ)言輸入的基礎(chǔ)上,通過(guò)自然語(yǔ)言理解和語(yǔ)義分析,理解用戶(hù)意圖,在不同領(lǐng)域、任務(wù)內(nèi)為用戶(hù)提供服務(wù)和幫助,下面這篇文章主要給大家介紹了關(guān)于java調(diào)用通義千問(wèn)API的詳細(xì)完整步驟,需要的朋友可以參考下
    2024-02-02
  • SpringBoot2.x版本中,使用SpringSession踩的坑及解決

    SpringBoot2.x版本中,使用SpringSession踩的坑及解決

    這篇文章主要介紹了SpringBoot2.x版本中,使用SpringSession踩的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Spring Boot修改內(nèi)置Tomcat默認(rèn)端口號(hào)的示例

    Spring Boot修改內(nèi)置Tomcat默認(rèn)端口號(hào)的示例

    本篇文章主要介紹了Spring Boot修改內(nèi)置Tomcat端口號(hào)的示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 淺談Java list.remove( )方法需要注意的兩個(gè)坑

    淺談Java list.remove( )方法需要注意的兩個(gè)坑

    這篇文章主要介紹了淺談Java list.remove( )方法需要注意的兩個(gè)坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • java中List接口與實(shí)現(xiàn)類(lèi)介紹

    java中List接口與實(shí)現(xiàn)類(lèi)介紹

    大家好,本篇文章主要講的是java中List接口與實(shí)現(xiàn)類(lèi)介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下,方便下次瀏覽
    2021-12-12
  • Spring Boot啟動(dòng)端口修改方法

    Spring Boot啟動(dòng)端口修改方法

    spring boot是個(gè)好東西,可以不用容器直接在main方法中啟動(dòng),而且無(wú)需配置文件,方便快速搭建環(huán)境。下面通過(guò)本文給大家分享Spring Boot修改啟動(dòng)端口的方法,感興趣的的朋友一起看看吧
    2017-07-07

最新評(píng)論