千锋教育Java入门全套视频教程(java核心技术,适合java零基础,Java

HashMap:
数据结构是数组+链表+红黑树(JDK1.8引入红黑树),当元素个数大于64并且链表上元素大于8转为红黑树,当链表个数大于8但是数组元素小于64,则进行数组扩容。当树中节点小于6又重新转为数组+链表。
HashMap数组容量为2的整数倍,最大容量为2<<30,为int类型中最大的2的整数倍,扩容机制为原来长度的2倍。
HashMap在存入元素时,先获取存入的key的hash值,与数组长度-1进行&运算,得到的值为在数组中的下标,得到下标后判断该位置是否有元素,有用链表链接,JDK1.7之前为头插法,JDK1.8以后为尾插法。
线程池7大参数:
核心线程,最大线程,闲置时间,时间单位,任务队列,线程工厂,拒绝策略
执行顺序:
假设任务一直提交,线程池最开始先创建核心线程执行任务,达到核心线程数后将任务放入任务队列,任务队列满载后再创建线程直到达到最大线程数,此时任务提交将触发拒绝策略,当任务全部执行完毕后,闲置时间到了后,线程池随机销毁线程直到核心线程数。
拒绝策略:
abortPolicy:直接抛出异常,终止程序
discardPolicy:丢弃新加入的任务,源码中是不对新加入的任务做任何处理
discardOldestPolicy:将任务队列中最早加入的任务丢弃,将新的任务加入到任务队列末尾
callerRunPolicy:将新的任务加入到线程中执行。