Java中如何使用synchronized

1.什么是synchronized?

Synchronized是Java關(guān)鍵字,是一種同步鎖。

可以理解為:當(dāng)一個(gè)方法等使用這個(gè)關(guān)鍵字修飾時(shí),同一時(shí)刻只能存在一個(gè)線程執(zhí)行被修飾的代碼,如果存在其他線程也需要執(zhí)行這個(gè)被修飾的代碼,那么其他線程必須等待當(dāng)前線程執(zhí)行完成被修飾的代碼后才能執(zhí)行該被修飾的代碼。

注意:當(dāng)一個(gè)線程訪問對(duì)象的一個(gè)加鎖代碼塊時(shí),另一個(gè)線程仍可以訪問該對(duì)象中的非加鎖代碼塊。

2.synchronized可以修飾哪些對(duì)象以及如何使用?

synchronized可以修飾對(duì)象一般為以下幾種:

(1)修飾代碼塊

????????a.被修飾的代碼塊稱為同步語句塊

????????b.作用范圍:synchronized修飾的大括號(hào)中的代碼

? ? ? ? c.作用對(duì)象:調(diào)用這個(gè)代碼塊的所有對(duì)象

? ? ? ? d.示例:

? ? ? ? ? ? ? ? public void method(int i){

? ??????????????????synchronized(this){

? ? ? ? ? ? ? ? ? ? ? ? i++;

????????????????????}

????????????????}

(2)修飾方法

????????a.普通方法

? ? ? ? ? ? (a)被修飾的方法叫做同步方法

? ? ? ? ? ? (b)作用范圍:被修飾的整個(gè)方法

? ? ? ? ? ? (c)作用對(duì)象:調(diào)用這個(gè)被修飾方法的對(duì)象

? ? ? ? ? ? (d)示例:

? ? ? ? ? ? ? ? ? ? public synchronized void method(int i){

????????????????????????????i++;

????????????????????}

????????b.靜態(tài)方法

????????????(a)被修飾的靜態(tài)方法叫做同步靜態(tài)方法

????????????(b)作用范圍:被修飾的整個(gè)靜態(tài)方法

????????????(c)作用對(duì)象:被修飾方法所屬類的所有對(duì)象(存在線程在該類進(jìn)行操作時(shí),其他線程在該類的所有對(duì)象上的操作都不能進(jìn)行)

? ? ? ? ? ? (d)示例:

? ??????????????????public static synchronized void method(int i){

????????????????????????i++;

????????????????????}

(3)修飾類

? ? ? ? a.被修飾的類叫做同步類

? ? ? ? b.作用范圍:被關(guān)鍵字修飾的后面大括號(hào)中的代碼

? ? ? ? c.作用對(duì)象:被修飾類的所有對(duì)象

? ? ? ? d.示例:

? ? ? ? ? ? public? class ClassName {

????????????????? public void method() {

? ? ? ????????????????synchronized(ClassName.class) {

? ? ? ? ? ? ? ? ? ? ? ?}

????????????????? }

????????????}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,697評(píng)論 18 399
  • Java多線程學(xué)習(xí) [-] 一擴(kuò)展javalangThread類 二實(shí)現(xiàn)javalangRunnable接口 三T...
    影馳閱讀 3,108評(píng)論 1 18
  • 一:java概述:1,JDK:Java Development Kit,java的開發(fā)和運(yùn)行環(huán)境,java的開發(fā)工...
    ZaneInTheSun閱讀 2,812評(píng)論 0 11
  • 苗老板最近很是頭痛,當(dāng)然不是因?yàn)楣ぷ魃系氖聝?,這么些年了大風(fēng)大浪什么沒經(jīng)歷過,是家里的那位這段時(shí)間一直憋著勁兒跟自...
    不是絞絲兒閱讀 329評(píng)論 0 3
  • 朵朵笑開顏如嬌娘耀眼 撲鼻的花香醉人流連 靜靜的矗立無言至寡言 汝似蜜蜂辛勤中游覽
    自由菲閱讀 279評(píng)論 0 1

友情鏈接更多精彩內(nèi)容