Java 保存对活动线程的引用的对象的垃圾收集
我有一个对象,它包含对2个守护进程线程的引用。我正在考虑一个没有去初始化的情况,因此我可以确定是否需要一个终结器。用于初始化的函数停止线程。我可以继续添加一个终结器,但我很好奇:Java 保存对活动线程的引用的对象的垃圾收集,java,multithreading,garbage-collection,Java,Multithreading,Garbage Collection,我有一个对象,它包含对2个守护进程线程的引用。我正在考虑一个没有去初始化的情况,因此我可以确定是否需要一个终结器。用于初始化的函数停止线程。我可以继续添加一个终结器,但我很好奇: 当上述线程处于活动状态时,对象是否可以被垃圾收集 如果它可以被垃圾回收,线程会被中断吗 您不应该在结束时停止线程,因为 应该而不是使应用程序的行为依赖于垃圾收集 垃圾收集在以下情况下非常有效: 不同的JVM 不同的JVM交换机 不同的操作系统 不同的硬件架构 不同的硬件规格(CPU、内核、内存) 一切都会影响垃圾收
您不应该在结束时停止线程,因为
应该而不是使应用程序的行为依赖于垃圾收集 垃圾收集在以下情况下非常有效:
- 不同的JVM
- 不同的JVM交换机
- 不同的操作系统
- 不同的硬件架构
- 不同的硬件规格(CPU、内核、内存)李>
在正常情况下,用户将正确地断开()连接,线程(处理I/O)将停止。我在考虑断开连接不正确的情况。那么,让我想想,你应该选择。。。保留支票?超时“无响应”后,线程被终止。因为与GC相比,这是非常确定的。你能详细说明一下吗?“没有回应”来自何方?顺便说一句,下面是代码:这是典型的场景:您有客户端套接字,您向它们发送保持活动的请求,它们会响应。当一个套接字没有响应时,它就断开了。当然,你需要为每个连接额外一个线程来执行keepalives。这使得整个事情变得更复杂,但这就是网络编程。