Thread--synchronized不能被繼承?!?!!!

其實真相是這樣的,“synchronized不能被繼承”,這句話有2種不同意思,一種是比較正常的、很容易讓人想到的意思;另一種是“不正常的”或者說是“java中文界”廣泛認同了的意思。
樓主是第一種意思,其他人是第二種意思。所以,會出現該貼的尷尬討論。
第一種理解方式:父類中有個synchronized方法,子類繼承了父類,但子類沒覆寫該方法。通過子類實例來使用該方法時,按“synchronized不能被繼承”,意思就爲:該子類的該方法就變成了非synchronized方法。
第二種理解方式:synchronized並不屬於方法定義的一部分,不能被繼承。子類覆寫了該方法,如果在覆寫時不明確寫上synchronized,那這個方法就不是synchronized。換句話說,雖然繼承了,但是沒把synchronized繼承下來,也就意味着“synchronized不能被繼承”。

我覺得“synchronized不能被繼承”這句話,沒把意思表述清楚。產生這種情況的原因,我推測是這樣的:某前輩詳細解釋了以上2種意思,最後總結的時候,使用了“synchronized不能被繼承”這句不太合適的話。某無知後輩轉述前輩意思的時候,就直接用了“synchronized不能被繼承”。結果一傳十,十傳百,這句話就傳開了,也讓初學者產生了迷惑。

在英文世界裏,沒有“synchronized不能被繼承”的討論。這也說明了點問題。

可以記住這麼句話:synchronized方法,一定要顯示標明,它是不能隱式標明的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章