Java 保存对活动线程的引用的对象的垃圾收集

Java 保存对活动线程的引用的对象的垃圾收集,java,multithreading,garbage-collection,Java,Multithreading,Garbage Collection,我有一个对象,它包含对2个守护进程线程的引用。我正在考虑一个没有去初始化的情况,因此我可以确定是否需要一个终结器。用于初始化的函数停止线程。我可以继续添加一个终结器,但我很好奇: 当上述线程处于活动状态时,对象是否可以被垃圾收集 如果它可以被垃圾回收,线程会被中断吗 您不应该在结束时停止线程,因为 应该而不是使应用程序的行为依赖于垃圾收集 垃圾收集在以下情况下非常有效: 不同的JVM 不同的JVM交换机 不同的操作系统 不同的硬件架构 不同的硬件规格(CPU、内核、内存) 一切都会影响垃圾收

我有一个对象,它包含对2个守护进程线程的引用。我正在考虑一个没有去初始化的情况,因此我可以确定是否需要一个终结器。用于初始化的函数停止线程。我可以继续添加一个终结器,但我很好奇:

  • 当上述线程处于活动状态时,对象是否可以被垃圾收集

  • 如果它可以被垃圾回收,线程会被中断吗


  • 您不应该在结束时停止线程,因为
    应该而不是使应用程序的行为依赖于垃圾收集

    垃圾收集在以下情况下非常有效:

    • 不同的JVM
    • 不同的JVM交换机
    • 不同的操作系统
    • 不同的硬件架构
    • 不同的硬件规格(CPU、内核、内存)
    一切都会影响垃圾收集

    所以,只要重新思考你的概念,给我们更多的信息,为什么一个线程应该
    在正常情况下,用户将正确地断开()连接,线程(处理I/O)将停止。我在考虑断开连接不正确的情况。那么,让我想想,你应该选择。。。保留支票?超时“无响应”后,线程被终止。因为与GC相比,这是非常确定的。你能详细说明一下吗?“没有回应”来自何方?顺便说一句,下面是代码:这是典型的场景:您有客户端套接字,您向它们发送保持活动的请求,它们会响应。当一个套接字没有响应时,它就断开了。当然,你需要为每个连接额外一个线程来执行keepalives。这使得整个事情变得更复杂,但这就是网络编程。