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

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

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

 synchronized

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

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

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

同步方法

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

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

靜態(tài)同步方法

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

同步塊

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

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

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

相關(guān)文章

  • Java編程中利用InetAddress類確定特殊IP地址的方法

    Java編程中利用InetAddress類確定特殊IP地址的方法

    這篇文章主要介紹了Java編程中利用InetAddress類確定特殊IP地址的方法,InetAddress類是Java網(wǎng)絡(luò)編程中一個(gè)相當(dāng)實(shí)用的類,需要的朋友可以參考下
    2015-11-11
  • java中的內(nèi)部類詳細(xì)總結(jié)

    java中的內(nèi)部類詳細(xì)總結(jié)

    內(nèi)部類不是很好理解,但說白了其實(shí)也就是一個(gè)類中還包含著另外一個(gè)類。如同一個(gè)人是由大腦、肢體、器官等身體結(jié)果組成,而內(nèi)部類相當(dāng)于其中的某個(gè)器官之一,例如心臟:它也有自己的屬性和行為(血液、跳動)
    2013-10-10
  • Java實(shí)戰(zhàn)員工績效管理系統(tǒng)的實(shí)現(xiàn)流程

    Java實(shí)戰(zhàn)員工績效管理系統(tǒng)的實(shí)現(xiàn)流程

    只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+Mysql+Maven+HTML實(shí)現(xiàn)一個(gè)員工績效管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平
    2022-01-01
  • 如何用Java實(shí)現(xiàn).env文件讀取敏感數(shù)據(jù)

    如何用Java實(shí)現(xiàn).env文件讀取敏感數(shù)據(jù)

    這篇文章主要介紹了如何用Java實(shí)現(xiàn).env文件讀取敏感數(shù)據(jù),并提供了一個(gè)自動配置類EnvAutoConfiguration,common-env-starter-demo模塊展示了如何配置和啟動一個(gè)簡單的Spring Boot應(yīng)用程序,需要的朋友可以參考下
    2025-02-02
  • 解決springboot中配置過濾器以及可能出現(xiàn)的問題

    解決springboot中配置過濾器以及可能出現(xiàn)的問題

    這篇文章主要介紹了解決springboot中配置過濾器以及可能出現(xiàn)的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Java編程使用UDP建立群聊系統(tǒng)代碼實(shí)例

    Java編程使用UDP建立群聊系統(tǒng)代碼實(shí)例

    這篇文章主要介紹了Java編程使用UDP建立群聊系統(tǒng)代碼實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2018-01-01
  • java8中的HashMap原理詳解

    java8中的HashMap原理詳解

    這篇文章主要介紹了java8中的HashMap原理詳解,HashMap是日常開發(fā)中非常常用的容器,HashMap實(shí)現(xiàn)了Map接口,底層的實(shí)現(xiàn)原理是哈希表,HashMap不是一個(gè)線程安全的容器,需要的朋友可以參考下
    2023-09-09
  • Spring?Boot如何監(jiān)控SQL運(yùn)行情況?

    Spring?Boot如何監(jiān)控SQL運(yùn)行情況?

    Druid是Java語言中最好的數(shù)據(jù)庫連接池,下面這篇文章主要給大家介紹了關(guān)于Spring?Boot如何監(jiān)控SQL運(yùn)行情況的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Spring注解之@Conditional使用解析

    Spring注解之@Conditional使用解析

    這篇文章主要介紹了Spring注解之@Conditional使用解析,@Conditional注解可以說是SpringBoot的條件注解,表示組件只有在所有指定條件都匹配時(shí)才有資格注冊,條件是可以在 bean 定義注冊之前??以編程方式確定的任何狀態(tài),需要的朋友可以參考下
    2024-01-01
  • IP查詢系統(tǒng)的異步回調(diào)案例

    IP查詢系統(tǒng)的異步回調(diào)案例

    本文主要分享了IP查詢系統(tǒng)的異步回調(diào)案例,具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02

最新評論

浦县| 根河市| 博湖县| 上栗县| 宜宾县| 吴旗县| 湄潭县| 马尔康县| 阿拉善左旗| 九台市| 宿松县| 兖州市| 若羌县| 新野县| 巴林左旗| 江川县| 青州市| 嘉义市| 长沙市| 登封市| 绥中县| 蓬安县| 沙河市| 名山县| 卢龙县| 德州市| 佛学| 贺州市| 宁化县| 绵阳市| 肥乡县| 章丘市| 宁河县| 讷河市| 兴山县| 涞水县| 五寨县| 嘉荫县| 南乐县| 乌拉特前旗| 阿合奇县|