From 5c2556fa91ea4552ef75b2d3d5748d10bb49957c Mon Sep 17 00:00:00 2001 From: crossoverJie Date: Mon, 12 Mar 2018 16:48:17 +0800 Subject: [PATCH 1/3] =?UTF-8?q?:truck:=20=E6=97=A0=E5=BA=8F-->=E6=97=A0?= =?UTF-8?q?=E9=A1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- notes/JVM.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notes/JVM.md b/notes/JVM.md index 0605479c..e45ec521 100644 --- a/notes/JVM.md +++ b/notes/JVM.md @@ -402,7 +402,7 @@ JVM 为对象定义年龄计数器,经过 Minor GC 依然存活,并且能被 ### 4.4 动态对象年龄判定 -JVM 并不是永远地要求对象的年龄必须达到 MaxTenuringThreshold 才能晋升老年代,如果在 Survivor 区中相同年龄所有对象大小的总和大于 Survivor 空间的一半,则年龄大于或等于该年龄的对象可以直接进入老年代,无序等待 MaxTenuringThreshold 中要求的年龄。 +JVM 并不是永远地要求对象的年龄必须达到 MaxTenuringThreshold 才能晋升老年代,如果在 Survivor 区中相同年龄所有对象大小的总和大于 Survivor 空间的一半,则年龄大于或等于该年龄的对象可以直接进入老年代,无须等待 MaxTenuringThreshold 中要求的年龄。 ### 4.5 空间分配担保 From 76897065f5c2a28fb7e92aaf6a9318bba2b300af Mon Sep 17 00:00:00 2001 From: crossoverJie Date: Mon, 12 Mar 2018 17:20:24 +0800 Subject: [PATCH 2/3] =?UTF-8?q?:art:=20=E5=9C=A8=20finally=20=E4=B8=AD?= =?UTF-8?q?=E8=A7=A3=E9=94=81=E6=9B=B4=E5=8A=A0=E5=8F=AF=E9=9D=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- notes/Java 并发.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/notes/Java 并发.md b/notes/Java 并发.md index c0fa0d6b..ef29ce92 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(); + } } ``` From c6a1d32ddfa062203a4fd584553b34174c962b82 Mon Sep 17 00:00:00 2001 From: crossoverJie Date: Mon, 12 Mar 2018 17:32:08 +0800 Subject: [PATCH 3/3] =?UTF-8?q?:fire:=20=E5=88=A0=E9=99=A4=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E6=96=87=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- notes/Java 并发.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notes/Java 并发.md b/notes/Java 并发.md index ef29ce92..c1298ceb 100644 --- a/notes/Java 并发.md +++ b/notes/Java 并发.md @@ -387,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() 调用给特定的线程。