如果一個類A有一個公共靜態方法,它被標記爲'synchronized'關鍵字,那麼是否有可能存在類級鎖?一個同步的靜態方法是否會導致類級鎖定?
當這樣的類存在鎖定時,我們能否實例化該類的對象,或者它與實例化沒有關係?
如果一個類A有一個公共靜態方法,它被標記爲'synchronized'關鍵字,那麼是否有可能存在類級鎖?一個同步的靜態方法是否會導致類級鎖定?
當這樣的類存在鎖定時,我們能否實例化該類的對象,或者它與實例化沒有關係?
如果類A被具有由 「同步」關鍵字標記過的公共靜態方法,則有可能以具有類 水平鎖?
是的,將是對A級
類級鎖當存在這樣一類鎖,才能實例化類的對象,也沒有任何與實例化?
當靜態方法存在鎖定時,它只會影響其他同步的靜態方法。您仍然可以創建該類的新實例。
是的,該鎖將保留在Class對象上。
從Locks In Synchronized Methods
你可能不知道,因爲靜態方法與一類,而不是一個對象關聯時被調用靜態同步方法會發生什麼,引用。在這種情況下,線程獲取與該類關聯的Class對象的內部鎖。因此,對類的靜態字段的訪問由與該類的任何實例的鎖截然不同的鎖來控制。
所有其他線程試圖執行同一個類的另一個靜態同步方法,或者在此實例上同步的任何其他方法將被阻止。