
java
fany000
https://github.com/fany000
展开
-
ThreadPoolExecutor源码解析
Doug Lea大神的设计思路1、线程池状态跟线程数合并到一个32位的int变量中,头三位为状态,剩下的为worker数。2、线程封装成Worker对象,启动线程的时候优先执行这个任务firstTask。小于设置的核心线程数量或者最大线程数量则添加worker,否则丢到任务队列中,3、默认Worker是不会终止的,一直循环去任务队列中取任务。核心代码成员变量// * RUNNING&l...原创 2019-03-19 16:32:36 · 99 阅读 · 0 评论 -
ArrayList大数据级别高效删除头元素
ArrayList的内部维护着一个数组,当调用remove方法的时候,会将删除位置之后的所有的数据向前移动,java中是以删除位置起始,用System.arrayCopy来复制删除位置后面的数据到当前数组的删除位置:由于ArrayList的读取效率很高,所以可以利用这个特性,把头元素跟尾元素调换位置,再把尾部元素删掉即可。...原创 2019-03-17 18:39:26 · 671 阅读 · 1 评论 -
Effective Java 3rd (二)
11.当你覆写equals时每次都覆写hashCode原创 2019-06-25 11:46:52 · 183 阅读 · 0 评论 -
Effective Java 3rd (三)
21. 为后代设计接口jdk8新增的default 默认方法会让类继承这些默认方法,存在一些风险,例如:Collection接口的removeIf方法是jdk8新增的default 方法,org.apache.commons.collections4.collection.SynchronizedCollection 类承诺提供的方法都是同步的,SynchronizedCollection ...原创 2019-06-28 11:02:13 · 223 阅读 · 0 评论