运行线程,直到对象/父对象被取消引用



我有一个Java类,它需要一个在实例化时并行运行的监视器。我想继续运行这个监视器,直到实例不再运行或没有被引用为止。通常我倾向于使用一个活动标志作为变量,当类关闭/关闭时,它就会关闭,但这必须小心管理,并且必须在关闭时调用它。我也知道Object的finalize成员,但我记得使用它是不安全的,还是用于此目的?此外,监控器可能对被监控对象有循环引用,但这可能是另一个问题。

您可以使用WeakReference在线程中监视对象。这允许垃圾收集器收集并销毁对象。在线程中,每次执行检查时都必须检查引用的对象是否仍然存在。如果它不再存在,您可以安全地退出线程。

由于垃圾收集器不会立即销毁对象,因此可能存在一个未知的时间跨度,其中胎面仍然处于活动状态,但被监视的对象不再使用。

最新更新