名称 | 核心线程数 | 线程池大小 | 非核心线程存活时间 | 等待队列大小 |
---|---|---|---|---|
CachedThreadPool | 0 | $\infty$ | 60s | 0 |
SingleThreadExecutor | 1 | 1 | 0 | $\infty$ |
FixedThreadPool | $n$ | $n$ | 0 | $\infty$ |
ScheduledThreadPoolExecutor |
equals
和 ==
的区别==
对于基本类型时,比较的是两个对象的值是否相同,而对于对象时,则比较的是这两个引用是否指向了同一个对象equals
则可以由类进行重写,使得其满足正常的比较关系。若不进行重写,则与 ==
等价equals
和 hashCode
为什么需要同时进行重写hashCode
在 Object
类下的默认行为是将此值的地址取出作为 hashCode
,但这与 hashCode
本意不同,hashCode
的值应当满足对于 $\forall x$ 若 x.equals(y) = true
,则 x.hashCode() = y.hashCode()
。所以当重写 equals
时,通常意味着这个值的相等概念与 ==
不同,所以必然需要重写 hashCode
避免在 hashMap
中出现意料之外的情况