第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

一個(gè)類的對象鎖只有一個(gè),類鎖呢?

一個(gè)類的對象鎖只有一個(gè),類鎖呢?

炎炎設(shè)計(jì) 2019-02-21 03:07:06
一個(gè)類的對象鎖只有一個(gè),如果有幾個(gè)非靜態(tài)函數(shù)都是synchronized,在某一時(shí)刻只有一個(gè)線程能調(diào)用其中一個(gè)函數(shù) 假如一個(gè)類有幾個(gè)靜態(tài)函數(shù)是synchronized,在某一時(shí)刻只有一個(gè)線程能調(diào)用其中一個(gè)靜態(tài)函數(shù)嗎?也就是類鎖也只有一個(gè)嗎?
查看完整描述

6 回答

?
動(dòng)漫人物

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊

前面一種鎖的是實(shí)例對象,鎖定了當(dāng)前的那個(gè)對象,如果有多個(gè)實(shí)例對象,這些synchronized方法之間不是同步的。第二種鎖的是類對象,類對象就一個(gè),所以是同步的。

查看完整回答
反對 回復(fù) 2019-03-01
?
鴻蒙傳說

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

public class Foo {

    synchronized void test1() {
        //to implements
    }

    void test2() {
        synchronized(this) {
            //to implements
        }
    }

    synchronized static void test3() {
        //to implements
    }

    static void test4() {
        synchronized(Foo.class) {
            //to implements
        }
    }
}

如上代碼,test1方法相當(dāng)于test2,當(dāng)this是同一個(gè)對象時(shí),會發(fā)生阻塞。當(dāng)然,不同對象沒有關(guān)系,因?yàn)閠his不一樣。稱為對象級鎖。
test3相當(dāng)于test4,這里是用class對象作為鎖,因?yàn)橐话闱闆r下一個(gè)類的類實(shí)例只有一個(gè),那么每次進(jìn)入這個(gè)方法都會鎖。稱為類級鎖。

查看完整回答
反對 回復(fù) 2019-03-01
?
呼喚遠(yuǎn)方

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個(gè)贊

  • 非靜態(tài)同步方法(A)用的鎖就是當(dāng)前實(shí)例對象本身,一個(gè)實(shí)例的A獲取鎖之后,該實(shí)例的其他A必須等待鎖的釋放,多個(gè)實(shí)例用的都是不同的鎖;

  • 靜態(tài)同步方法(B)用的鎖是類對象本身,一旦一個(gè)B獲取鎖之后其他的B都必須等待釋放鎖,不管是一個(gè)實(shí)例還是多個(gè)實(shí)例;

另外 A和B之間用不同的鎖,所以不會有競爭關(guān)系;

查看完整回答
反對 回復(fù) 2019-03-01
?
慕尼黑8549860

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊

Class類創(chuàng)建一個(gè)對象就是代表一個(gè)普通類,這時(shí)“類鎖”就是這個(gè)實(shí)例對象上的鎖

查看完整回答
反對 回復(fù) 2019-03-01
?
蠱毒傳說

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超3個(gè)贊

你說的是“互斥鎖”的概念,針對synchronized修飾方法有兩種情況:

【非靜態(tài)方法】

當(dāng)一個(gè)方法被synchronized修飾后,鎖對象為當(dāng)前方法所屬對象,即方法中的this。

【靜態(tài)方法】

當(dāng)一個(gè)靜態(tài)方法被synchronized修飾后,該靜態(tài)方法上鎖的對象為當(dāng)前類對象(Class類的實(shí)例)。每個(gè)類都有唯一的一個(gè)類對象。獲取類對象的方式:類名.class。

而對于互斥的場景,需要理解兩點(diǎn)說明:

1、靜態(tài)方法與非靜態(tài)方法同時(shí)聲明了synchronized,他們之間是非互斥關(guān)系的。原因在于,靜態(tài)方法鎖的是類對象而非靜態(tài)方法鎖的是當(dāng)前方法所屬對象。

2、當(dāng)Synchronized修飾的是兩段不同的代碼,但是鎖對象相同時(shí),兩個(gè)線程分別調(diào)用者兩段代碼時(shí)就是互斥的

所以你說的“一時(shí)刻只有一個(gè)線程能調(diào)用其中一個(gè)函數(shù)”(即互斥),判斷條件就是鎖對象是否相同,與方法類型無關(guān)。

查看完整回答
反對 回復(fù) 2019-03-01
?
慕雪6442864

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊

對象方法的synchronized修飾,鎖為對象自身,也就是this;
靜態(tài)方法的synchronized修飾,鎖為Class對象自身,也就是由類加載器創(chuàng)建的類對象;

查看完整回答
反對 回復(fù) 2019-03-01
  • 6 回答
  • 0 關(guān)注
  • 999 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號