diff --git a/notes/JVM.md b/notes/JVM.md index 285b59d3..e190121b 100644 --- a/notes/JVM.md +++ b/notes/JVM.md @@ -403,7 +403,7 @@ JVM 为对象定义年龄计数器,经过 Minor GC 依然存活,并且能被 ### 4.4 动态对象年龄判定 -JVM 并不是永远地要求对象的年龄必须达到 MaxTenuringThreshold 才能晋升老年代,如果在 Survivor 区中相同年龄所有对象大小的总和大于 Survivor 空间的一半,则年龄大于或等于该年龄的对象可以直接进入老年代,无序等待 MaxTenuringThreshold 中要求的年龄。 +JVM 并不是永远地要求对象的年龄必须达到 MaxTenuringThreshold 才能晋升老年代,如果在 Survivor 区中相同年龄所有对象大小的总和大于 Survivor 空间的一半,则年龄大于或等于该年龄的对象可以直接进入老年代,无须等待 MaxTenuringThreshold 中要求的年龄。 ### 4.5 空间分配担保 diff --git a/notes/Java 并发.md b/notes/Java 并发.md index c0fa0d6b..c1298ceb 100644 --- a/notes/Java 并发.md +++ b/notes/Java 并发.md @@ -258,9 +258,13 @@ public void func(String name) { ```java private Lock lock; public int func(int value) { - lock.lock(); - // ... - lock.unlock(); + try { + lock.lock(); + // ... + + }finally { + lock.unlock(); + } } ``` @@ -383,7 +387,7 @@ Consumer4 is consuming product made by Consumer4... **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() 调用给特定的线程。