当前位置: 首页 > news >正文

[java: Cleaner]-一文述之

Cleaner

Cleaner 是 Java 9 引入的资源清理机制,用于在对象被垃圾回收后自动或手动执行清理操作,替代 finalize(),安全、异步且高效。

public final class Cleaner {final CleanerImpl impl;static {CleanerImpl.setCleanerImplAccess(new Function<Cleaner, CleanerImpl>() {@Overridepublic CleanerImpl apply(Cleaner cleaner) {return cleaner.impl;}});}private Cleaner() {impl = new CleanerImpl();}// 创建一个新的 Cleaner,使用默认后台守护线程处理清理任务。public static Cleaner create() {Cleaner cleaner = new Cleaner();cleaner.impl.start(cleaner, null);return cleaner;}// 使用指定线程工厂创建 Cleaner,适合自定义线程配置(如优先级、命名)。public static Cleaner create(ThreadFactory threadFactory) {Objects.requireNonNull(threadFactory, "threadFactory");Cleaner cleaner = new Cleaner();cleaner.impl.start(cleaner, threadFactory);return cleaner;}// 注册一个对象与清理任务,当对象被 GC 回收后,后台线程执行 action。返回 Cleanable 可用于提前清理。public Cleanable register(Object obj, Runnable action) {Objects.requireNonNull(obj, "obj");Objects.requireNonNull(action, "action");return new CleanerImpl.PhantomCleanableRef(obj, this, action);}// 表示一次清理任务,调用 clean() 方法可以手动执行清理逻辑,只会执行一次。public interface Cleanable {void clean();}}
http://www.dtcms.com/a/269215.html

相关文章:

  • Python与Mongo数据库:下载安装mongodb与CompassGUI、python中安装monggo模块、如何在Mongo中插入一条数据
  • 10.5 实战ChatGLM3私有数据微调之提示工程:批量生成数据稳定性秘籍
  • HarmonyOS从入门到精通:自定义组件开发指南(二):组件属性与参数传递
  • Python实现MCP Server的完整Demo
  • 《声音的变形记:Web Audio API的实时特效法则》
  • Web 前端安全防护:防范常见攻击与漏洞的策略
  • SKUA-GOCAD入门教程-第八节 线的创建与编辑7和8
  • 特别放送:关于一个无法修复的系统级Bug
  • Eslint基础使用
  • 插入数据优化
  • 镜头OIS系统方案全面解析:从基础原理到前沿应用
  • 【ElasticSearch实用篇-01】需求分析和数据制造
  • Spring Cloud Config(微服务配置中心详解)
  • 七牛云Java开发面试题及参考答案(60道面试题汇总)
  • 华为OD机试 2025B卷 - 最小循环子数组(C++PythonJAVAJSC语言)
  • 【论文笔记】World Models for Autonomous Driving: An Initial Survey
  • 【C++读取输入空格到CHAR数组】2022-7-19
  • 在vue3+ts项目中引入element-plus及其图标
  • 【读代码】深度解析TEN VAD:实时语音活动检测的高性能开源解决方案
  • 从被动救火到主动预测!碧桂园服务以图谱技术重塑IT运维底座
  • 开放端口,开通数据库连接权限,无法连接远程数据库 解决方案
  • Debian 11 Bullseye 在线安装docker
  • Java 命令行参数详解:系统属性、JVM 选项与应用配置
  • axios无感刷新token
  • 万物智联时代启航:鸿蒙OS重塑全场景开发新生态
  • Android kotlin中 Channel 和 Flow 的区别和选择
  • 《Effective Python》第十二章 数据结构与算法——当精度至关重要时使用 decimal
  • 【R语言】Can‘t subset elements that don‘t exist.
  • 学习日记-spring-day42-7.7
  • Java --接口--内部类分析