synchronized 理解

 在理解synchronized之前要先理解同步和異步

同步:發送一個請求,等待返回,然後再發送下一個請求 
異步:發送一個請求,不等待返回,隨時可以再發送下一個請求 

同步和異步最大的區別就在於。一個需要等待,一個不需要等待。

也就是說同步是一個一個執行的,異步是可以一起執行的

而現在,使用synchronized修飾的變量或者方法,只能有一個在參與到程序運行中去。也就是說,無論你開多少個線程。這個方法只能在同一時刻存在一個。

例子:

假設P1、P2是同一個類的不同對象,這個類中定義了以下幾種情況的同步塊或同步方法,P1、P2就都可以調用它們。
1.  把synchronized當作函數修飾符時,示例代碼如下: 
Public synchronized void methodAAA() 
{ 
} 

注意:鎖定的是對象

這也就是同步方法,那這時synchronized鎖定的是哪個對象呢?**它鎖定的是調用這個同步方法對象**。也就是說,當一個**對象P1在不同的線程中執行這個同步方法時,它們之間會形成互斥,達到同步的效果**。但是這個對象所屬的Class所產生的**另一對象P2卻可以任意調用這個被加了synchronized關鍵字的方法。**  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章