auto commit
This commit is contained in:
parent
4f832119f0
commit
49b3867666
|
@ -477,7 +477,7 @@ System.out.println(InterfaceExample.x);
|
|||
- 从设计层面上看,抽象类提供了一种 IS-A 关系,那么就必须满足里式替换原则,即子类对象必须能够替换掉所有父类对象。而接口更像是一种 LIKE-A 关系,它只是提供一种方法实现契约,并不要求接口和实现接口的类具有 IS-A 关系。
|
||||
- 从使用上来看,一个类可以实现多个接口,但是不能继承多个抽象类。
|
||||
- 接口的字段只能是 static 和 final 类型的,而抽象类的字段没有这种限制。
|
||||
- 接口的方法只能是 public 的,而抽象类的方法可以有多种访问权限。
|
||||
- 接口的方法只能是 public 的,而抽象类的方法可以由多种访问权限。
|
||||
|
||||
**4. 使用选择**
|
||||
|
||||
|
|
|
@ -688,9 +688,9 @@ static final class HashEntry<K,V> {
|
|||
}
|
||||
```
|
||||
|
||||
Segment 继承自 ReentrantLock,每个 Segment 维护着多个 HashEntry。
|
||||
ConcurrentHashMap 和 HashMap 实现上类似,最主要的差别是 ConcurrentHashMap 采用了分段锁(Segment),每个分段锁维护着几个桶(HashEntry),多个线程可以同时访问不同分段锁上的桶,从而使其并发度更高(并发度就是 Segment 的个数)。
|
||||
|
||||
ConcurrentHashMap 和 HashMap 实现上类似,最主要的差别是 ConcurrentHashMap 采用了分段锁,每个分段锁维护着几个桶,多个线程可以同时访问不同分段锁上的桶,从而使其并发度更高(并发度就是 Segment 的个数)。
|
||||
Segment 继承自 ReentrantLock。
|
||||
|
||||
```java
|
||||
static final class Segment<K,V> extends ReentrantLock implements Serializable {
|
||||
|
@ -722,7 +722,7 @@ final Segment<K,V>[] segments;
|
|||
static final int DEFAULT_CONCURRENCY_LEVEL = 16;
|
||||
```
|
||||
|
||||
<div align="center"> <img src="../pics//image005.jpg"/> </div><br>
|
||||
<div align="center"> <img src="../pics//3fdfc89d-719e-4d93-b518-29fa612b3b18.png"/> </div><br>
|
||||
|
||||
### 2. size 操作
|
||||
|
||||
|
|
BIN
pics/3fdfc89d-719e-4d93-b518-29fa612b3b18.png
Normal file
BIN
pics/3fdfc89d-719e-4d93-b518-29fa612b3b18.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 23 KiB |
Loading…
Reference in New Issue
Block a user