From 3b5e22ec25a204c6677c0c826ac025bdd48bec2f Mon Sep 17 00:00:00 2001 From: Omooo <869759698@qq.com> Date: Thu, 18 Jun 2020 19:33:47 +0800 Subject: [PATCH] =?UTF-8?q?Update=20Java=20=E5=B9=B6=E5=8F=91=E7=BC=96?= =?UTF-8?q?=E7=A8=8B=E7=BA=BF=E7=A8=8B=E5=9F=BA=E7=A1=80.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blogs/Java/并发/Java 并发编程线程基础.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/blogs/Java/并发/Java 并发编程线程基础.md b/blogs/Java/并发/Java 并发编程线程基础.md index 20a30bd..c12a350 100644 --- a/blogs/Java/并发/Java 并发编程线程基础.md +++ b/blogs/Java/并发/Java 并发编程线程基础.md @@ -11,6 +11,7 @@ Java 并发编程线程基础 5. 让出 CPU 执行权的 yield 方法 6. 线程中断 7. 线程死锁 +8. 守护线程与用户线程 #### 线程的创建与运行 @@ -155,3 +156,10 @@ public static boolean interrupted() { 那么如何避免死锁呢? +要想避免死锁,只需要破坏掉至少一个构成死锁的条件即可,但是目前只有请求并持有和环路等待条件是可以被破坏的。 + +造成死锁的原因其实和申请资源的顺序有很大关系,使用资源申请的有序性原则就可以避免死锁。 + +#### 守护线程与用户线程 + +Java 中的线程分为两类,分别是 daemon 线程(守护线程)和 user 线程(用户线程)。JVM 在运行用户线程的同时,还运行着很多守护线程,比如有垃圾回收线程。那么守护线程和用户线程有什么区别呢?区别之一是当最后一个用户线程结束时,JVM 正常退出,而不管当前是否有守护线程,也就是说守护线程是否结束并不影响 JVM 的退出。 \ No newline at end of file