如何参考被注册的对象执行清洁操作

自Java 9开始,我们终于有了Cleaner。但是在docs中是专门声明的:

每个清洁器独立运行,管理未决的清洁动作,并在不再使用清洁器时处理穿线和终止情况。

注册对象引用和相应的清理操作将返回Cleanable。最有效的用法是在关闭或不再需要该对象时显式调用clean方法。

清理动作是一个Runnable,除非对象已被明确清理,否则当对象变为幻影可到达对象时,该动作最多可调用一次。

请注意,清洁操作不得引用正在注册的对象。如果是这样,则该对象将不会成为幻像可访问对象,并且清洁操作将不会自动调用。

不幸的是,这正是我所需要的:我要注册的动作需要引用对象本身(通常再调用一个方法也没什么)。

由于使用Cleaner看起来不可能,是否有办法使用幻影或弱/软引用来做到这一点?

我看了看它们,它们看上去相当复杂,因此在花大量时间认真研究它们之前,我想提前知道是否有可能实现这种目的

Ps:看来Phantom references现在已经验尸了

yinguang120 回答:如何参考被注册的对象执行清洁操作

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2637588.html

大家都在问