java類鎖和對(duì)象鎖

java對(duì)象鎖有兩種:對(duì)象鎖单鹿、類鎖馏予。

對(duì)象鎖:在非靜態(tài)方法上加鎖天梧。聲明了一個(gè)對(duì)象鎖。類鎖:在靜態(tài)方法上加鎖霞丧,聲明了一個(gè)類鎖呢岗。

經(jīng)過大量的實(shí)驗(yàn)總結(jié)出以下結(jié)論:

1、想要保證能夠鎖住對(duì)象蛹尝,需要在對(duì)應(yīng)的的普通方法上加上synchronized關(guān)鍵字后豫。

2、想要保證能夠鎖住對(duì)象突那,需要在對(duì)應(yīng)的的普通方法上加上synchronized關(guān)鍵字挫酿。

3、非靜態(tài)函數(shù)用關(guān)鍵字synchronized不會(huì)對(duì)普通方法有影響愕难。

4早龟、普通函數(shù)用關(guān)鍵字synchronized不會(huì)對(duì)靜態(tài)方法有影響。

然后我們來做一個(gè)實(shí)驗(yàn):

1猫缭、我們先聲明一個(gè)類對(duì)象葱弟,

2、聲明了兩個(gè)普通方法猜丹,一個(gè)method1用synchronized關(guān)鍵字修飾芝加,另一個(gè)method2沒有鎖(沒有用synchronized修飾)

3、兩個(gè)函數(shù)都調(diào)用另一個(gè)普通函數(shù)method3射窒,函數(shù)method讓對(duì)象的屬性加一藏杖。循環(huán)一萬次。

4轮洋、有兩個(gè)線程分別執(zhí)行method1和method2制市。那么執(zhí)行結(jié)果是什么呢?

線程類:

package Test;

public class Syn extends Thread{

int i;

private TestSyn syn;

public Syn(int i ,TestSyn syn) {

this.i=i;

this.syn=syn;

}

@Override

public void run() {

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

if(i%2==0) {

syn.method1(syn);

}

else {

syn.method2(syn);

}

}

}

測(cè)試類:

package Test;

public class TestSyn {

private int i;

public TestSyn(int i) {

this.i=i;

}

public synchronized void method1(TestSyn aSyn) {

System.out.println("1");

method3(aSyn);

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println("變化的i"+aSyn.i);

}

public void method2(TestSyn aSyn) {

System.out.println("2");

method3(aSyn);

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println("變化的i"+aSyn.i);

}

public void method3(TestSyn aSyn) {

for(int i=0;i<10000;i++) {

aSyn.i++;

}

}

public static void main(String[] args) {

Syn []a = new Syn[2];

TestSyn aSyn=new TestSyn(0);

a[0]=new Syn(1,aSyn);

a[1]=new Syn(2,aSyn);

a[1].start();

a[0].start();

}

}

理論上是20000弊予,實(shí)際上會(huì)少很多祥楣,所以這種方式是線程不安全的。

所以如果想讓兩個(gè)函數(shù)互斥的訪問某些資源,在對(duì)應(yīng)的函數(shù)訪問的時(shí)候都要加上鎖误褪。這樣才能保證數(shù)據(jù)的正確性责鳍。

 在此我向大家推薦一個(gè)架構(gòu)學(xué)習(xí)交流群。交流學(xué)習(xí)群號(hào):938837867 暗號(hào):555 里面會(huì)分享一些資深架構(gòu)師錄制的視頻錄像:有Spring兽间,MyBatis历葛,Netty源碼分析,高并發(fā)嘀略、高性能恤溶、分布式、微服務(wù)架構(gòu)的原理帜羊,JVM性能優(yōu)化咒程、分布式架構(gòu)等這些成為架構(gòu)師必備

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市讼育,隨后出現(xiàn)的幾起案子帐姻,更是在濱河造成了極大的恐慌,老刑警劉巖奶段,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饥瓷,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡痹籍,警方通過查閱死者的電腦和手機(jī)呢铆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來词裤,“玉大人刺洒,你說我怎么就攤上這事『鹕埃” “怎么了逆航?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)渔肩。 經(jīng)常有香客問我因俐,道長(zhǎng),這世上最難降的妖魔是什么周偎? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任抹剩,我火速辦了婚禮,結(jié)果婚禮上蓉坎,老公的妹妹穿的比我還像新娘澳眷。我一直安慰自己,他們只是感情好蛉艾,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布钳踊。 她就那樣靜靜地躺著衷敌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拓瞪。 梳的紋絲不亂的頭發(fā)上缴罗,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音祭埂,去河邊找鬼面氓。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蛆橡,可吹牛的內(nèi)容都是我干的舌界。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼航罗,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼禀横!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起粥血,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎酿箭,沒想到半個(gè)月后复亏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缭嫡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年缔御,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妇蛀。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡耕突,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出评架,到底是詐尸還是另有隱情眷茁,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布纵诞,位于F島的核電站上祈,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏浙芙。R本人自食惡果不足惜登刺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嗡呼。 院中可真熱鬧纸俭,春花似錦、人聲如沸南窗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽女轿。三九已至,卻和暖如春蛉迹,著一層夾襖步出監(jiān)牢的瞬間傅寡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工北救, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留珍策,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓攘宙,卻偏偏與公主長(zhǎng)得像铺韧,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子料仗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 【嵌牛導(dǎo)讀】:JAVA多線程中的鎖問題是很經(jīng)典的問題平窘,也比較復(fù)雜是鬼。今天給大家分享一下我對(duì)內(nèi)部類的鎖問題的分析李剖,主要...
    小怪獸大作戰(zhàn)閱讀 1,530評(píng)論 0 0
  • 在一般性開發(fā)中,筆者經(jīng)匙德螅看到很多同學(xué)在對(duì)待java并發(fā)開發(fā)模型中只會(huì)使用一些基礎(chǔ)的方法。比如Volatile琴儿,sy...
    張勇_bf29閱讀 695評(píng)論 0 1
  • 一:java概述: 1,JDK:Java Development Kit键兜,java的開發(fā)和運(yùn)行環(huán)境凤类,java的開發(fā)...
    慕容小偉閱讀 1,766評(píng)論 0 10
  • 有些事,有些人普气,錯(cuò)過了就錯(cuò)過了吧。 1.你是最了解我的姑娘佃延,我卻缺席了你的重要時(shí)刻现诀。 我是很久很久以后才聽到她說,...
    劉家小二閱讀 229評(píng)論 2 2
  • 雪 你似面但你不粘 你像鹽但你不咸 你似糖但你不甜 你似絮但你不暖 你是北方的驕傲 你是人們的希望 你來了 孩子樂...
    旖旎i閱讀 210評(píng)論 2 5