auto commit

This commit is contained in:
CyC2018 2018-06-23 21:47:35 +08:00
parent 4f832119f0
commit 49b3867666
3 changed files with 4 additions and 4 deletions

View File

@ -477,7 +477,7 @@ System.out.println(InterfaceExample.x);
- 从设计层面上看,抽象类提供了一种 IS-A 关系,那么就必须满足里式替换原则,即子类对象必须能够替换掉所有父类对象。而接口更像是一种 LIKE-A 关系,它只是提供一种方法实现契约,并不要求接口和实现接口的类具有 IS-A 关系。 - 从设计层面上看,抽象类提供了一种 IS-A 关系,那么就必须满足里式替换原则,即子类对象必须能够替换掉所有父类对象。而接口更像是一种 LIKE-A 关系,它只是提供一种方法实现契约,并不要求接口和实现接口的类具有 IS-A 关系。
- 从使用上来看,一个类可以实现多个接口,但是不能继承多个抽象类。 - 从使用上来看,一个类可以实现多个接口,但是不能继承多个抽象类。
- 接口的字段只能是 static 和 final 类型的,而抽象类的字段没有这种限制。 - 接口的字段只能是 static 和 final 类型的,而抽象类的字段没有这种限制。
- 接口的方法只能是 public 的,而抽象类的方法可以多种访问权限。 - 接口的方法只能是 public 的,而抽象类的方法可以多种访问权限。
**4. 使用选择** **4. 使用选择**

View File

@ -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 ```java
static final class Segment<K,V> extends ReentrantLock implements Serializable { 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; 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 操作 ### 2. size 操作

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB