JAVA學習的重難點
發布時間:2022-11-19 17:20:07 已幫助:人
一、面向對象
在Java的類庫里面有很多的骨架實現。設計模式的出現要比Java早很多年。設計模式的思想的作者或鼻祖是緣于一個磚匠,搬磚的磚。
你們應該很慶幸設計模式就只有20幾種,終歸到底是緣于Java的特性也就這么幾個。國外做過研究人能同時記住的東西是7±2。很巧的是Java的特性也就7±2。但是7±2也就最多組成20幾種設計模式。
好了問題來了,你能記住幾個Java特性(Java特性最多也就是9個哦),如果你能全部記住,那么問題升華了,你精通多少種設計模式。如果你們背的話,我能從1背到10億。
二、多線程
多線程只能說太難了,Java在多線程的上很落后的。Volatile關鍵字反反復復跟新了幾次背后原理實現,對于偽共享的實現也是在1.8才加入的。
多線程,偽共享,鎖機制,同步機制,重鎖機制。這些在15年前是高級課題,也是為什么很多Java書籍都把多線程放在最后一章節。也是15年前存在的東西。
看到沒有,就算是人家把Java開源你們在技術上也會落后15年,因為JDK現在才到1.8。為什么是15年前,因為15年前摩爾定律不再適用了,intel的老板跪在地上說,如果CPU超過4.0G我公司要倒閉了。所以多核的時代來臨了。
回過頭來為什么說多線程難,學習多線程,你要搞清楚同步,異步,管程(什么是管程,就是Java文件代碼上加了synchronized關鍵字后,變成class文件后。synchronized關鍵字變成了Java虛擬機的Moniters命令的中文翻譯),鎖機制,阻塞,以及線程的幾種狀態。
什么順序一致性,原子性,有鎖,無鎖。安全性,讀寫同步/讀不用同步,寫同步。多核,compareAndSet(),getAndSet(),偽共享,高速緩存,Volatile關鍵字,系統總線,等等等等。
多線程機制雖然多,但是這不是思想的重要性。再我看來最重要的就是為什么10年就有AtomicInteger為什么現在只在原來的基礎上跟新了一個LongAdder,為什么這兩個類都是同一個老頭寫的而不是年輕人。
為什么這兩個類都引用了sun.misc.Unsafe這個非公開類。為什么是不安全的。現在發現多線程是有多難了吧,沒有發現這段話比上面那段面向對象的字數都多了一倍麼。