java synchronized 关键字(1)对象监视器为Object
在java多線程中 synchronized 是非常重要的,也是經(jīng)常用到的
對(duì)于synchronized關(guān)鍵字要注意兩點(diǎn)
synchronized對(duì)象監(jiān)視器為Object的時(shí)候?
synchronized對(duì)象監(jiān)視器為Class的時(shí)候
對(duì)象監(jiān)視器為Object
也就是synchronized鎖定的是對(duì)象
例如下面代碼
public class A {
? ? synchronized public void MethodA(){
? ? ? ? System.out.println("this is MethodA");
? ? }
? ? synchronized public void MethodB(){
? ? ? ? System.out.println("this is MethodB");
? ? }
? ? public void MethodC(){
? ? ? ? System.out.println("this is MethodC");
? ? }
}
創(chuàng)建對(duì)象 a 和b
A a = new ?A();
A b = new A();
1
2
當(dāng)兩個(gè)線程分別調(diào)用 a.MethodA() 和 a.MethodB() 的時(shí)候 這兩個(gè)方法是不能同時(shí)執(zhí)行的,因?yàn)閟ynchronized 鎖的是a 這個(gè)對(duì)象,a 里面被synchronized 關(guān)鍵字標(biāo)記的方法只能串行,也就是同一時(shí)間只有一個(gè)synchronized 標(biāo)記的方法能運(yùn)行。a.MethodA() 運(yùn)行 b.MethodB()就要等待,?
但a.MethodC()可以運(yùn)行,因?yàn)镸ethodC沒有被標(biāo)記,屬于非現(xiàn)成安全。不受關(guān)鍵字影響。
a.MethodA()和b.MethodA() 可以同時(shí)運(yùn)行,因?yàn)閟ynchronized鎖的是對(duì)象,a和b屬于兩個(gè)對(duì)象,所以有兩把鎖分別鎖a和b,但相互之間不受影響。
---------------------?
作者:瘦包子?
來源:CSDN?
原文:https://blog.csdn.net/baolijuncool/article/details/53327028?
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!
總結(jié)
以上是生活随笔為你收集整理的java synchronized 关键字(1)对象监视器为Object的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中信途牛银联联名卡额度多少
- 下一篇: 我国5月增持109亿美元美债,持有量创三