赞
踩
转载自:https://blog.csdn.net/qq_21033663/article/details/79571506
很多java开发的小伙伴都会阅读jdk源码,然而确不知道应该从哪读起。以下为小编整理的通常所需阅读的源码范围。
标题为包名,后面序号为优先级1-4,优先级递减
1、java.lang
- 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
- 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
- 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
1、Object
1) wait(), notify(), notifyAll(), wait(timeout)
2) hashCode(), equals()
3) clone()
2、String
1) char[] value
2) int hash
3) equals(), startWith(), endWith(), replace
3、AbstractStringBuilder
1) char[] value
2) int count
3) 扩容:翻倍,不够取所需最小
4、StringBuffer
1) 继承AbstractStringBuilder
2) synchronized方法保证线程安全
3) char[] toStringCache
5、StringBuilder 继承AbstractStringBuilder
6、ArrayList
1) Object[] elementData
2) int size
3) 默认大小10
4) 扩容:翻倍,不够取所需最小
7、LinkedList
1) Node {E item, Node prev, Node next}
2) int size
3) Node first
4) Node last
5) linkFirst(), linkLast(), linkBefore(), unLinkFirst(), unLinkLast(), unLink(), indexOf()
8、HashMap
1) Node{int hash, K key, V value, Node next}
2) 默认容量16,负载因子0.75f
3) int size, modCount, threshold, float loadFactor
4) Node[] table
5) Set entrySet
6) put():根据key算hash,根据容量和hash算index,table[index]没有直接添加到数组中,table[index]有,若index位置同一个key则更新,否则遍历next是否有,有则更新,无则新增,最后根据thread与size判断是否扩容。注:扩容时容量翻倍,重新算hash复制到新数组
7)get()类似
注:先比较hash,若相等在比较equals
9、Hashtable
1) 结构实现与HashMap基本一致
2)通过synchronized方法保证线程安全
10、HashSet:委托给HashMap,其Value是同一个默认对象
11、LinkedHashMap继承HashMap
1) Entry{HashMap.Node, Entry before, after}
2) Entry head, tail
3) 重写newNode()添加节点时,除像HashMap中添加外,保存before、after信息
12、LinkedHashSet继承HashSet:不知道如何实现的顺序?
13、AbstractMap维护EntrySet,AbstractSet维护Iterator,AbstractList维护Iterator
14、ConcurrentHashMap
1) JDK1.7及以前:
a、Segment[] ,HashEntry[] , HashEntry{hash, k, v, next}
b、根据key算hash,根据hash和Segment的大小算位置,每个segment拥有一个自己的HashEntry[]
c、get():不加锁,volatile类型
d、put(): 对相应segment加锁
e、size():各HashEntry[] 之和,先不加锁算两遍,若一致则返回,若不一致则加锁重新计算
2)JDK1.8
a、Node{hash, key, value, next}
b、Node[] table
c、大多数操作类似于HashMap,不同CAS方式设置,根据key算hash,在根据hash和容量算index,对table[index]加锁,从而达到更大的并发量
d、get(): 同HashMap
e、put(): 对table[index]加锁
15、TreeMap
1)红黑树,即自平衡二叉查找树,时间复杂度O(logn)
2)Entry{K k, V v, Entry parent, left, right, boolean color}
3)Entry root,int size, int modeCount
16、TreeSet:委托TreeMap实现
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。