Merge pull request #45 from crossoverJie/master

JVM 中的一些优化及重复字符
This commit is contained in:
CyC2018 2018-03-12 18:43:48 +08:00 committed by GitHub
commit 6e667d6a7a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 5 deletions

View File

@ -403,7 +403,7 @@ JVM 为对象定义年龄计数器,经过 Minor GC 依然存活,并且能被
### 4.4 动态对象年龄判定 ### 4.4 动态对象年龄判定
JVM 并不是永远地要求对象的年龄必须达到 MaxTenuringThreshold 才能晋升老年代,如果在 Survivor 区中相同年龄所有对象大小的总和大于 Survivor 空间的一半,则年龄大于或等于该年龄的对象可以直接进入老年代,无等待 MaxTenuringThreshold 中要求的年龄。 JVM 并不是永远地要求对象的年龄必须达到 MaxTenuringThreshold 才能晋升老年代,如果在 Survivor 区中相同年龄所有对象大小的总和大于 Survivor 空间的一半,则年龄大于或等于该年龄的对象可以直接进入老年代,无等待 MaxTenuringThreshold 中要求的年龄。
### 4.5 空间分配担保 ### 4.5 空间分配担保

View File

@ -258,9 +258,13 @@ public void func(String name) {
```java ```java
private Lock lock; private Lock lock;
public int func(int value) { public int func(int value) {
lock.lock(); try {
// ... lock.lock();
lock.unlock(); // ...
}finally {
lock.unlock();
}
} }
``` ```
@ -383,7 +387,7 @@ Consumer4 is consuming product made by Consumer4...
**Executor 的中断操作** **Executor 的中断操作**
Executor 避免对 Thread 对象的直接操作,但是使用 interrupt() 方法必须持有 Thread 对象。Executor 使用 shutdownNow() 方法来中断所有它里面的所有线程shutdownNow() 方法会发送 interrupt() 调用给所有线程。 Executor 避免对 Thread 对象的直接操作,但是使用 interrupt() 方法必须持有 Thread 对象。Executor 使用 shutdownNow() 方法来中断它里面的所有线程shutdownNow() 方法会发送 interrupt() 调用给所有线程。
如果只想中断一个线程,那么使用 Executor 的 submit() 而不是 executor() 来启动线程就可以持有线程的上下文。submit() 将返回一个泛型 Futrue可以在它之上调用 cancel(),如果将 true 传递给 cancel(),那么它将会发送 interrupt() 调用给特定的线程。 如果只想中断一个线程,那么使用 Executor 的 submit() 而不是 executor() 来启动线程就可以持有线程的上下文。submit() 将返回一个泛型 Futrue可以在它之上调用 cancel(),如果将 true 传递给 cancel(),那么它将会发送 interrupt() 调用给特定的线程。