我从毕业做程序员就开始用 Java,到现在已经工作快 20 年了。减去我做手游用 C++、Lua 的几年,再减去后来转管理写代码少的时间,我真正写 Java 代码的时间至少也在 10 年以上。
如果你问我“Java 已经精通了吗?”,说实话,还是有点心虚。
Java 博大精深,那么多知识点,肯定有我不懂的。另外,每个人对“精通”都有自己的理解,有人觉得是精于使用,有人觉得是精于底层原理,也有人觉得是精于框架。
但是,毕竟用 Java 十多年了,我可以说说我自己对“精通 Java”的理解。
Java 语言覆盖的知识很广泛,但是总的来说,最重要的是以下三个方面:
- Java 基础知识
- Java 并发编程
- JVM 底层知识
所以,所谓精通 Java 语言,可以大致等同于视为上述三个方面的精通。
Java 基础知识的精通主要体现在,能很顺畅的把 Java 的各种基础数据结构、各种内置对象,都融合到实际的场景中,能以最快的速度、最佳的方案,去解决实际中的工作问题。
比如,大家在项目中,经常是不会区分对象是强引用还是弱引用的,统统都是强引用。如果一个精通 Java 基础知识的工程师,就会根据实际情况,去灵活地运用强引用、弱引用。
Java 并发编程的精通主要体现在,能非常巧妙得把各种多线程设计模式以及并发包中的各种工具,去解决各种并发难题。
例如,使用 Future 和相关子类去提升程序的运行效率,用 CountDownLatch 去控制线程