# 阅读顺序

以下是本文档的阅读源码的顺序,标题为包名,后面的序号代表的是优先级,1~4 优先级依次递减。

# java.lang

该包里其实就是 Java 的基本语法,包括了各种基本数据类型IntegerLongDouble等)、各种基本类ObjectClassEnumThread等)。

Object  1
String  1
AbstractStringBuilder   1
StringBuffer    1
StringBuilder   1
Boolean 2
Byte    2
Double  2
Float   2
Integer 2
Long    2
Short   2
Thread  2
ThreadLocal 2
Enum    3
Throwable   3
Error   3
Exception   3
Class   4
ClassLoader 4
Compiler    4
System  4
Package 4
Void    4

# java.util

该包里放的都是一些 Java 的基本工具,包括各种容器集合,如ListMapSet等。

AbstractList    1
AbstractMap 1
AbstractSet 1
ArrayList   1
LinkedList  1
HashMap 1
HashTable   1
HashSet 1
LinkedHashMap   1
LinkedHashSet   1
TreeMap 1
TreeSet 1
Vector  1
Queue   1
Stack   1
SortedMap   2
SortedSet   2
Collections 2
Arrays  2
Comparator  2
Iterator    2
Base64  3
Date    3
EventListener   4
Random  4
SubList 4
Timer   4
UUID    4
WeakHashMap 4

# java.util.concurrent

这是一个非常著名的,简称JUC的包,里面包含了 Java 并发多线程编程相关的代码。

ConcurrentHashMap   1
Executor    2
AbstractExecutorService 2
ExecutorService 2
ThreadPoolExecutor  2
BlockingQueue   2
AbstractQueuedSynchronizer  2
CountDownLatch  2
FutureTask  2
Semaphoer   2
CyclicBarrier   2
CopyOnWriteArrayList    3
SynchronousQueue    3
BlockingDeque   3
Callable    3

# java.util.concurrent.atomic

AtomicBoolean   2
AtomicInteger   2
AtomicLong  2
AtomicReference 3

# java.util.function

这里面包括了 Java 函数式编程的常见接口和代码。

# java.util.stream

# java.lang.reflect

该包包含了 Java 反射基本元素相关的代码。

Field   2
Method  2

# java.lang.annotation

该包包含了 Java 注解基本元素相关的代码。

Annotation  3
Target  3
Inherited   3
Retention   3
Documented  4
ElementType 4
Native  4
Repeatable  4

# java.util.concurrent.locks

Lock    1
Condition   2
ReentrantLock   2
ReentrantReadWriteLock  2

# java.io

该包包含了 Java 传统的输入输出的代码,主要是面向字节的 IO 操作。

File    2
InputStream 2
OutputStream    2
Reader  3
Writer  3

# java.nio

该包包含了 Java 非阻塞的 IO 相关的代码,主要是面向缓冲通道以及选择的 IO 操作。

Buffer  3
ByteBuffer  4
CharBuffer  4
DoubleBuffer    4
FloatBuffer 4
IntBuffer   4
LongBuffer  4
ShortBuffer 4

# java.sql

Connection  3
Driver  3
DriverManager   3
JDBCType    3
ResultSet   3
Statement   3

# java.time

该包包含了 Java 新日期等相关的代码,比如典型的有DateTimeFormatter等类。

# java.math

该包主要包含了一些高精度运算的数据支持类。

# java.net

该包主要包含了 Java 网络通信,比如Socket通信等相关的源代码。

Socket  2
ServerSocket    3
URI 3
URL 3
URLEncoder  4