|
这是JDK11 Cleaner 官方文档地址: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/ref/Cleaner.html ,文档中的使用示例如下图

Cleaner主要作用是用一个线程,在垃圾回收时清理资源。
我知道使用 try(){} 这样的 try-with-resource 结构可以将实现了 AutoCloseable 接口的类放入 try() 括号中, 这样在 try 语句结束后自动调用 close() 释放资源。
而 Cleaner 与之不同的是,可以在垃圾清理 gc 发生时进行清理线程,而不是非要等到try块结束。这样可以在try中发生死锁或try块过长的时候进行清理。
我实现了如下代码:
import java.io.Closeable;
import java.io.IOException;
import java.lang.ref.Cleaner;
public class Test {
public static void main(String[] args) {
try{
for(int i=0; i |
|