我是新來的Java,並試圖瞭解同步語句的概念,代碼和下面的語句從Java tutorial Oracle出來。'nameList'變量是一個實例變量還是類變量?爲什麼不包含在「同步(本){}」語句?
我的問題是,是「名字列表」變量的實例變量或類變量?爲什麼不包含在synchronised(this){}
聲明?我有很大的困難理解的概念。
同步報表
另一個創建同步代碼的方法是同步 聲明。不像同步方法的,同步的語句必須 指定提供固有鎖對象:
在這個例子中,addName方法需要同步變化 lastName的和nameCount,還需要避免同步的 調用其他對象「的方法。 (從同步代碼中調用其他對象' 方法可能會產生在Liveness部分描述 的問題。)如果沒有同步語句,則 必須是單獨的,未同步的方法,用於調用nameList.add的唯一目的。
您是否閱讀過「Liveness」部分? –
它並沒有真正說出'nameList'是什麼,但大概這個調用不需要外部同步。本教程的要點是介紹'synchronized(monitor){}'語法,該語法允許從同步中排除部分方法(或者在除'this之外的任何其他同步方法)。所以他們只是提出這種情況,你有一些鎖不應該被覆蓋的方法的一部分(以避免活性問題)。 – Thilo