2011-05-05 166 views

回答

3

Java不会记录任何线程的(创建)父线程,并且(假设的)父子关系对线程的工作方式没有影响。

Java对此的最接近的是ThreadGroup的概念。每个线程都是一个线程组的成员,线程组可以包含其他线程组,并且线程组形成一个以最初的线程组为根的可导航树。然而,由于ThreadGroup的暂停/恢复/杀死线程是危险的并且不推荐使用,ThreadGroups并不能真正让你做很多事情。

垃圾回收器线程可能是最初的ThreadGroup的成员。但是,GC线程也可能是特例,而不是任何ThreadGroup的成员。无论哪种方式,它都不会影响任何东西......除非您编写遍历ThreadGroup树的程序。

守护进程线程只是在守护进程启动之前设置的线程。这与ThreadGroup机制无关。

1

没有没有。守护进程线程继续运行,直到您调用exit()或所有非守护进程线程都已死亡。

换句话说,这不是因为你在另一个线程中创建了一个线程,它们是它们之间的父子关系。他们有独立的生活。

0

如果每个java线程都映射到正在使用的操作系统的lwp,则默认情况下JVM创建的所有线程都是启动java进程本身的父进程的子进程。所以,java进程中没有父进程的垃圾收集线程。所以像垃圾回收线程,终结器和引用处理程序线程这样的线程都是主进程的父进程的子进程。

您可以在Solaris计算机上查看ps -elL的输出以确认此情况。

我认为这回答你的问题。如果不是,请回复。