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,是整个生态!