diff --git a/notes/Java 容器.md b/notes/Java 容器.md index c5a41bc0..1db0d845 100644 --- a/notes/Java 容器.md +++ b/notes/Java 容器.md @@ -646,8 +646,8 @@ static int indexFor(int h, int length) { | 参数 | 含义 | | :--: | :-- | | capacity | table 的容量大小,默认为 16。需要注意的是 capacity 必须保证为 2 的 n 次方。| -| size | table 的实际使用量。 | -| threshold | size 的临界值,size 必须小于 threshold,如果大于等于,就必须进行扩容操作。 | +| size | 键值对数量。 | +| threshold | size 的临界值,当 size 大于等于 threshold 就必须进行扩容操作。 | | loadFactor | 装载因子,table 能够使用的比例,threshold = capacity * loadFactor。| ```java diff --git a/notes/Java 虚拟机.md b/notes/Java 虚拟机.md index 2dafe334..e24015c5 100644 --- a/notes/Java 虚拟机.md +++ b/notes/Java 虚拟机.md @@ -227,7 +227,7 @@ obj = null;

-将存活的对象进行标记,然后清理掉未被标记的对象。 +标记要回收的对象,然后清除。 不足: diff --git a/notes/计算机操作系统.md b/notes/计算机操作系统.md index 56dc401e..fbc26212 100644 --- a/notes/计算机操作系统.md +++ b/notes/计算机操作系统.md @@ -625,7 +625,7 @@ void take_two(int i) { down(&s[i]); } -void put_tow(i) { +void put_two(i) { down(&mutex); state[i] = THINKING; test(LEFT); diff --git a/notes/设计模式.md b/notes/设计模式.md index 38713e5f..f20a807a 100644 --- a/notes/设计模式.md +++ b/notes/设计模式.md @@ -149,7 +149,7 @@ uniqueInstance 采用 volatile 关键字修饰也是很有必要的, `uniqueIn 2. 初始化 uniqueInstance 3. 将 uniqueInstance 指向分配的内存地址 -但是由于 JVM 具有指令重排的特性,执行顺序有可能变成 1>3>2。指令重排在单线程环境下不会出先问题,但是在多线程环境下会导致一个线程获得还没有初始化的实例。例如,线程 T1 执行了 1 和 3,此时 T2 调用 getUniqueInstance() 后发现 uniqueInstance 不为空,因此返回 uniqueInstance,但此时 uniqueInstance 还未被初始化。 +但是由于 JVM 具有指令重排的特性,执行顺序有可能变成 1>3>2。指令重排在单线程环境下不会出现问题,但是在多线程环境下会导致一个线程获得还没有初始化的实例。例如,线程 T1 执行了 1 和 3,此时 T2 调用 getUniqueInstance() 后发现 uniqueInstance 不为空,因此返回 uniqueInstance,但此时 uniqueInstance 还未被初始化。 使用 volatile 可以禁止 JVM 的指令重排,保证在多线程环境下也能正常运行。