2014-09-22 12 views
0

我對java有一個基本的疑問。同步散列表適用於整個班級

假設有一個A類,其中有一個同步方法M.如果我爲A類創建一個對象A1並訪問同步的方法M,則對象A1被同步方法M鎖定。我正在創建一個返回類型爲Hashtable的方法(內部是一個同步的方法)它是否以類似上述方法行事?整個對象在使用Hashtable的返回類型執行該方法之前會變得無法訪問?

+1

不僅訪問器和增變器方法是同步的。 – ares 2014-09-22 14:09:06

回答

0

不,整個對象將不可訪問。

但會發生什麼是所有其他方法標記​​將阻塞,直到你的方法,該方法返回的Hashtable完成(通過返回值,拋出異常等)。

換句話說,如果方法M和N都是同步的,考慮同一個對象實例,那麼直到另一個完成才能處理。和方法A不同步可以在任何時候執行:)

順便說一句,如果您需要更復雜的同步,您可以同步任何Object ...但方法名稱通常是足夠的關鍵字。