同步的塊,並與下面的場景同步方法之間請,我有疑問:Java同步處理
第一部分 --------------:
Class table
{
Synchronized(this)
{
……………………
}
}
這裏我們鎖定了表類的對象。 -------------------------------------- ...
第2部分:
Class table
{
Customer cust=new Customer();
Synchronized(cust)
{
……………………
}
}
這裏我們鎖定了customer.ie的對象cust 在part1中,我們鎖定了表類的對象。 因爲表類的對象可能試圖同時訪問來自不同位置的已同步的
塊,所以我們鎖定了表類。爲了防止它,我們鎖定了第1部分中的表類
的對象。 現在來到part2:? - 這裏我們鎖定了客戶類的對象 ------------------------------- ------- ...
我的疑惑:
我們爲什麼要鎖定在比第2部分的表類其他表類的對象?
如果我們沒有得到卡斯特部分2鎖定那麼我們就可以使用表 類如果我們鎖定卡斯特那麼我們還需要表類的對象來訪問synchronized塊訪問synchronized塊。 表類的對象只需要訪問同步塊。 由於同步,我們阻止表類的對象同時訪問來自不同線程的同步塊
。 那麼爲什麼我們應該在table類中鎖定table類以外的對象呢?客戶類的對象是否會嘗試同時訪問同步塊
不同的地方?在part2中,我們鎖定了除表類以外的對象。 在什麼情況下,在表類以外的類的對象上獲取鎖定是
在part2中鎖定客戶類對象的好處是什麼?什麼是需要鎖定客戶類的對象,即表類除外?
如果我們沒有在part2中鎖定客戶類的對象會發生什麼樣的損害?
請問,我是新來的Java線程,我一直試圖圍繞這些問題圍繞我的頭一段時間。任何明確的解釋將有助於很多。謝謝
您是否意識到等寬字體很難讀取文本?你介意打破代碼塊中的文字嗎? –
我強烈建議您修改格式。此外,Java同步是一個廣泛討論的主題,所以您應該提到您已經在StackOverflow中查看過的內容。 –
當我搜索「什麼是Java同步做」在谷歌,第一次打是這個SO問題:http://stackoverflow.com/questions/1085709/what-does-synchronized-mean –