java為什么難學?
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!

緩存有redis,memcache,ehcache!
消息中間件有redis,activeMq,RabbitMq,ons!
往往你在一家公司用了一個框架,去另一家就要用新的,最后變成你什么都要會,什么都得學!

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

