我有一个Java类,需要在实例化时并行运行监视器。我想继续运行此监视器,直到实例不再运行或未引用它。 通常我倾向于使用活动标志作为变量,当关闭/关闭类时它会关闭,但是必须仔细管理它并且必须在关闭时调用它。 我也知道Object的finalize成员但是我记得使用它是不安全的还是为此目的? 此外,监视器当然可能具有对受监视对象的循环引用,但这可能是另一个问题。
答案 0 :(得分:3)
您可以使用WeakReference在线程中监视对象。这允许垃圾收集器收集和销毁对象。 在线程中,每次执行检查时,每次检查引用的对象是否仍然存在时都要检查。如果它不再存在,您可以安全地退出该线程。
由于垃圾收集器不会立即销毁物体,因此可能存在未知的时间跨度,其中胎面仍然处于活动状态,但不再使用受监视的对象。