其實真相是這樣的,“synchronized不能被繼承”,這句話有2種不同意思,一種是比較正常的、很容易讓人想到的意思;另一種是“不正常的”或者說是“java中文界”廣泛認同了的意思。
樓主是第一種意思,其他人是第二種意思。所以,會出現該貼的尷尬討論。
第一種理解方式:父類中有個synchronized方法,子類繼承了父類,但子類沒覆寫該方法。通過子類實例來使用該方法時,按“synchronized不能被繼承”,意思就爲:該子類的該方法就變成了非synchronized方法。
第二種理解方式:synchronized並不屬於方法定義的一部分,不能被繼承。子類覆寫了該方法,如果在覆寫時不明確寫上synchronized,那這個方法就不是synchronized。換句話說,雖然繼承了,但是沒把synchronized繼承下來,也就意味着“synchronized不能被繼承”。
我覺得“synchronized不能被繼承”這句話,沒把意思表述清楚。產生這種情況的原因,我推測是這樣的:某前輩詳細解釋了以上2種意思,最後總結的時候,使用了“synchronized不能被繼承”這句不太合適的話。某無知後輩轉述前輩意思的時候,就直接用了“synchronized不能被繼承”。結果一傳十,十傳百,這句話就傳開了,也讓初學者產生了迷惑。
在英文世界裏,沒有“synchronized不能被繼承”的討論。這也說明了點問題。
可以記住這麼句話:synchronized方法,一定要顯示標明,它是不能隱式標明的。
Thread--synchronized不能被繼承?!?!!!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
獲得tableview當前選中的cell
aHowl
2020-07-02 21:27:43
springboot使用https訪問
array_it
2020-06-20 22:01:33
通過分析周榜前100名專家的博客文章 手把手教你寫出爆款文章
SoWhat1412
2020-06-20 08:26:51
Markdown語法圖文教程
HEERY551
2020-06-03 17:06:04
人人都想知道的祕密,通過分析周榜前100名專家的博客文章 手把手教你寫出爆款文章
SoWhat1412
2020-04-19 08:07:50
UltraWebToolbar菜單欄控件使用實例
fudapeng7
2020-02-24 01:46:25
UltraWebToolbar+UltraWebGrid使用實例
fudapeng7
2020-02-24 01:46:25
kindEditor富文本框控件使用
fudapeng7
2020-02-24 01:46:25
datagrid加載數據,列內容顯示,改變字體顏色
fudapeng7
2020-02-24 01:46:25
UltraWebGrid對行進行初始化-狀態字體顏色-單元格內加入鏈接
fudapeng7
2020-02-24 01:46:25
JS中對象顯示和隱藏相互轉換
fudapeng7
2020-02-24 01:46:25
JQuery取消和註冊對象Click事件同時防止多播委託
fudapeng7
2020-02-24 01:46:25
表單驗證ASP.NET RequiredFieldValidator 控件使用方法及使用實例
fudapeng7
2020-02-24 01:46:25
JDK的安裝與環境配置的注意問題
aHowl
2020-02-21 02:21:22
無聊扯淡
SoWhat1412
2019-10-25 14:03:44