finalize
Java里垃圾回收器可以回收对象使用的内存空间,但是对象可能会
持有很多资源比如Socket、文件句柄等,垃圾收集器无法回收这些资源,因此你需要使用finalize方法帮助GC回收这些
资源,比如关闭打开的文件或者网元资源,删除临时文件等.
HashMap(并发不安全的)
jdk1.7
头插法
并发扩容时会导致循环问题
jdk 1.8
采用尾插法解决了扩容时循环问题。
CurrentHashMap(并发安全的)
ConcurrentHashMap支持并发操作,通过继承 ReentrantLock(JDK1.7重入锁)/CAS和synchronized(JDK1.8内置锁)来进行加锁(分段锁),每次需要加锁的操作锁住的是一个 segment,这样只要保证每个 Segment 是线程安全的,也就实现了全局的线程安全。
JDK1.8之前HashMap的结构为数组+链表,JDK1.8之后HashMap的结构为数组+链表+红黑树;JDK1.8之前ConcurrentHashMap的结构为segment数组+数组+链表,JDK1.8之后ConcurrentHashMap的结构为数组+链表+红黑树。
jdk1.7
jdk 1.8
copyonwritearraylist
通过拷贝数组 ,读写分离来保证线程安全性,读操作 还是访问的是旧数组,写操作改变的是新数组 ,最后读写操作执行完毕之后 再用新数组替换旧数组。
AQS的实现类
Reentrantlock
Countdownlatch
Reentrantreadwritelock