# JdkSourceCodeLearn **Repository Path**: libai4hao/jdk-source-code-learn ## Basic Information - **Project Name**: JdkSourceCodeLearn - **Description**: No description available - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-10-24 - **Last Updated**: 2021-10-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # JavaJdk-source-learn JDK1.8源码学习 jdk源代码版本号:jdk1.8.0_151 操作系统:win10 搭建仓库的教程文档在项目doc目录下 # 注意事项 这个项目需要设置项目编码为gbk(老注释是在gbk配置时写的) # 学习计划 源代码结合[官方文档](https://docs.oracle.com/javase/8/docs/api/)(英文版)学习效率更高。 jdk源代码结构:程序羊的推荐(从日常编程频次和面试考虑) 只需要看java目录下io、lang、math、net、nio、time、util、,这七个子包 系统性看、按需看两种策略都可以。平时没事进来看看。 集合框架类,这部分内容日常开发使用较多,而且面试高频出现,因此也可以先从这里入手。 主要包括 Collection、Map、Queue 等组成的一系列常用类和接口,包括 ArrayList、LinkedList、HashMap 等。 ### 如何阅读一个类的源码呢? 主要步骤大概是: 先读接口代码。包括接口说明文档、各个方法的定义和说明文档。 再去读实现类的主要方法实现,通常有以下两条主线入口: - 构造方法 - 常用方法 在 Java 中,接口通常意味着是一种“标准”、或者“协议”。一个接口可以有多个实现类,它们都会按照接口的这种标准来实现接口的各个方法。 因此,理解了一个方法的定义,再去看它的实现会更容易理解。 ## 详细源码阅读顺序 以下为小编整理的通常所需阅读的源码范围。 标题为包名,后面序号为优先级1-4,优先级递减 1、java.lang ``` 重点:annotation(注解),reflect(反射) 1) Object 1 2) String 1 3) AbstractStringBuilder 1 4) StringBuffer 1 5) StringBuilder 1 6) Boolean 2 7) Byte 2 8) Double 2 9) Float 2 10) Integer 2 11) Long 2 12) Short 2 13) Thread 2 14) ThreadLocal 2 15) Enum 3 16) Throwable 3 17) Error 3 18) Exception 3 19) Class 4 20) ClassLoader 4 21) Compiler 4 22) System 4 23) Package 4 24) Void 4 ``` 2、java.util ``` 重点:concurrent(大名鼎鼎的JUC包,里面包含了Java并发和多线程编程相关的代码;atomic:原子类、locks:锁),function(函数式编程的接口),stream(流式接口的实现). 1) AbstractList 1 2) AbstractMap 1 3) AbstractSet 1 4) ArrayList 1 5) LinkedList 1 6) HashMap 1 7) Hashtable 1 8) HashSet 1 9) LinkedHashMap 1 10) LinkedHashSet 1 11) TreeMap 1 12) TreeSet 1 13) Vector 2 14) Queue 2 15) Stack 2 16) SortedMap 2 17) SortedSet 2 18) Collections 3 19) Arrays 3 20) Comparator 3 21) Iterator 3 22) Base64 4 23) Date 4 24) EventListener 4 25) Random 4 26) SubList 4 27) Timer 4 28) UUID 4 29) WeakHashMap 4 ``` 3、java.util.concurrent ``` 1) ConcurrentHashMap 1 2) Executor 2 3) AbstractExecutorService 2 4) ExecutorService 2 5) ThreadPoolExecutor 2 6) BlockingQueue 2 7)AbstractQueuedSynchronizer 2 8)CountDownLatch 2 9) FutureTask 2 10)Semaphore 2 11)CyclicBarrier 2 13)CopyOnWriteArrayList 3 14)SynchronousQueue 3 15)BlockingDeque 3 16) Callable 4 ``` 4、java.util.concurrent.atomic ``` 1) AtomicBoolean 2 2) AtomicInteger 2 3) AtomicLong 2 4) AtomicReference 3 ``` 5、java.lang.reflect ``` 1) Field 2 2) Method 2 ``` 6、java.lang.annotation ``` 1) Annotation 3 2) Target 3 3) Inherited 3 4) Retention 3 5) Documented 4 6) ElementType 4 7) Native 4 8) Repeatable 4 ``` 7、java.util.concurrent.locks ``` 1) Lock 2 2) Condition 2 3) ReentrantLock 2 4) ReentrantReadWriteLock 2 ``` 8、java.io ``` 1) File 3 2) InputStream 3 3) OutputStream 3 4) Reader 4 5) Writer 4 ``` 9、java.nio ``` 非阻塞IO,主要是面向缓冲、通道以及选择器的I/O 1) Buffer 3 2) ByteBuffer 4 3) CharBuffer 4 4) DoubleBuffer 4 5) FloatBuffer 4 6) IntBuffer 4 7) LongBuffer 4 8) ShortBuffer 4 ``` 10、java.sql ``` 1) Connection 3 2) Driver 3 3) DriverManager 3 4) JDBCType 3 5) ResultSet 4 6) Statement 4 ``` 11、java.net ``` 1) Socket 3 2) ServerSocket 3 3) URI 4 4) URL 4 5) URLEncoder 4 ``` # JDK1.8源码分析系列文章 01=JDK1.8源码分析01之学习建议(可以延伸其他源码学习) 02=JDK1.8源码分析02之阅读源码顺序 03=JDK1.8源码分析03之idea搭建源码阅读环境 04=JDK1.8源码分析04之java.lang.Object类 # JDK相关面试集锦系列文章 持续更新中.......