java為什么難學?我覺得JAVA的難度,在于它的廣度!

都知道JAVA入門很容易,學點基本類型,基本運算,面向對象思想,IO,就可以開發大多數的JAVA程序了!

那為什么難呢?以多線程為例,最簡單的實現一個Thread或者實Runnble接口就可以實現了多線程了,但是怕你亂用線程導致性能問題呀,就給你整了個線程池,以實現線程復用,但是線程池創建又有單例型的,動態型的,周期性執行任務型的好幾種!

而且用了多線程之后,因為線程共享資源會有線程安全問題吧?怎么辦?加鎖唄,synchonized加鎖,鎖方法,鎖對象,鎖代碼段,鎖就鎖了還非得說性能不好,搞一個CAS,AQS實現reentrantLock!

這時候傲嬌的人來了說不想加鎖,咋辦呢?ThreadLocal,給你每個線程一份變量行了吧?這樣數據不會相互影響!使用BlockingQueue一個一個處理總行了吧!

還有多線程中的CountDownBatch,valetile,并行計算有FutrueTask,Forkjoin哪一個詞匯都不是省油的燈!

上面談到的多線程只是J.U.C包下的冰山一角,而多線程這也只是JAVA下的冰山一角!

而且JAVA開發最難的不止是JAVA語言,而是JAVA生態,搞JAVA的都知道下面這些:

搜索引擎有lucence,solr,elasticSearch!

數據庫方面有hibernate,mybatis,mycat,druid,canel!

java為什么難學

緩存有redis,memcache,ehcache!

消息中間件有redis,activeMq,RabbitMq,ons!

往往你在一家公司用了一個框架,去另一家就要用新的,最后變成你什么都要會,什么都得學!

java為什么難學

所以如果再有人問你JAVA為什么難學?你可以自豪的說,我學的不止是JAVA,是整個生態!