我是Java的新手,我发现了一件有趣的事情。现在,我正在学习套接字,并且在调试程序时,我注意到我并没有创建几个线程。然后,在程序的开头放置一个断点,当我打开线程时,我可以看到属于Socket的所有线程。但是我还没有创建它,因为它是第一行代码。我现在想知道那些线程来自何处,以及为什么如果仍未创建套接字,为什么已经创建了它们。
答案 0 :(得分:4)
屏幕截图中的线程如下:
main
方法而创建的线程。Cleaner
机制相关,这是对对象删除进行整理的更好方法。finalize
方法。Reference
个对象执行处理。这些线程都是由JVM本身创建的。
JVM也具有一个或多个本机GC线程,但是显然它们没有显示在清单中。我认为这是因为它们没有相应的Thread
对象。 (它们……很特别!)