垃圾收集器是一个守护程序线程,由JVM调用和控制。它有父线程吗?我有点困惑......
答案 0 :(得分:3)
Java不记录任何线程的(创建)父线程,并且(假设的)父子关系与线程的工作方式无关。
Java最接近的是ThreadGroup的概念。每个Thread都是ThreadGroup的成员,ThreadGroups可以包含其他ThreadGroup,ThreadGroups形成一个以初始ThreadGroup为根的可导航树。但是,ThreadGroups实际上并不允许你做太多,因为ThreadGroup挂起/恢复/终止线程是危险的并且已弃用。
垃圾收集器线程可能是初始ThreadGroup的成员。但是,GC线程也可能是特殊情况,而不是任何ThreadGroup的成员。无论哪种方式,它都不会影响任何东西......除非你编写一个遍历ThreadGroup树的程序。
守护程序线程只是在启动之前设置了守护程序标志的线程。这与ThreadGroup机制无关。
答案 1 :(得分:1)
不,没有。守护程序线程继续运行,直到你调用exit()或所有非守护程序线程都死了。
换句话说,这不是因为你在另一个线程中创建一个线程,它们是它们之间的父子关系。他们有独立的生活。
答案 2 :(得分:0)
如果每个java线程都映射到您正在使用的OS中的lwp,那么JVM默认创建的所有线程都是父进程的子进程,它启动java进程本身。因此,垃圾收集线程的java进程中没有父级。因此,像垃圾收集线程,终结器和引用处理程序线程这样的线程都是java进程的父进程的子进程以及主线程。
您可以在Solaris计算机上查看ps -elL
的输出以确认这一点。
我认为这可以回答你的问题。如果没有,请退回。