java synchronized 关键字(1)对象监视器为Object
在java多線程中 synchronized 是非常重要的,也是經常用到的
對于synchronized關鍵字要注意兩點
synchronized對象監視器為Object的時候?
synchronized對象監視器為Class的時候
對象監視器為Object
也就是synchronized鎖定的是對象
例如下面代碼
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");
? ? }
}
創建對象 a 和b
A a = new ?A();
A b = new A();
1
2
當兩個線程分別調用 a.MethodA() 和 a.MethodB() 的時候 這兩個方法是不能同時執行的,因為synchronized 鎖的是a 這個對象,a 里面被synchronized 關鍵字標記的方法只能串行,也就是同一時間只有一個synchronized 標記的方法能運行。a.MethodA() 運行 b.MethodB()就要等待,?
但a.MethodC()可以運行,因為MethodC沒有被標記,屬于非現成安全。不受關鍵字影響。
a.MethodA()和b.MethodA() 可以同時運行,因為synchronized鎖的是對象,a和b屬于兩個對象,所以有兩把鎖分別鎖a和b,但相互之間不受影響。
---------------------?
作者:瘦包子?
來源:CSDN?
原文:https://blog.csdn.net/baolijuncool/article/details/53327028?
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
總結
以上是生活随笔為你收集整理的java synchronized 关键字(1)对象监视器为Object的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中信途牛银联联名卡额度多少
- 下一篇: android contentprovi