M. *_* S. 7 java resources garbage-collection
阅读Java 9的Cleaner类后,我在同一页中找到了以下示例:
public class CleaningExample implements AutoCloseable {
// A cleaner, preferably one shared within a library
private static final Cleaner cleaner = <cleaner>;
static class State implements Runnable {
State(...) {
// initialize State needed for cleaning action
}
public void run() {
// cleanup action accessing State, executed at most once
}
}
private final State;
private final Cleaner.Cleanable cleanable
public CleaningExample() {
this.state = new State(...);
this.cleanable = cleaner.register(this, state);
}
public void close() {
cleanable.clean();
}
}
Run Code Online (Sandbox Code Playgroud)
在第二行中有一条评论说:
清洁工,最好是在图书馆内共享的清洁工
为什么最好Cleaner在一个库中共享一个(静态)?
有没有人有一个很好的例子说明如何使用Cleaner而不是覆盖finalize()?
为什么最好在库中有一个共享的Cleaner(静态)?
清洁器具有关联的线程。线程是有限的本地资源。因此,目标是通过不创建多余的清理器来限制创建的线程数量。
有没有人有一个很好的例子说明如何使用Cleaner而不是覆盖finalize()?
您发布了参考示例。如果这还不够,您需要提出更具体的问题。