Java : Cleaner.Cleanable - API使用例
Cleaner.Cleanable (Java SE 21 & JDK 21) の使用例まとめです。
だいたいのメソッドを網羅済みです。
API仕様書のおともにどうぞ。
概要
Cleanable インタフェースを使うと、Cleaner に登録されたアクションを、オブジェクトのクリアを待たずに実行できます。
class Foo {
}
final var foo = new Foo();
final var cleaner = Cleaner.create();
final var cleanable = cleaner.register(foo, () -> {
System.out.println("Clean!");
final var current = Thread.currentThread();
System.out.printf(" (thread id = %d, daemon = %b)%n",
current.threadId(), current.isDaemon());
});
System.out.println("-- start -- (thread id = " +
Thread.currentThread().threadId() + ")");
cleanable.clean();
// 結果
// ↓
//-- start -- (thread id = 1)
//Clean!
// (thread id = 1, daemon = false)
メソッド
void clean ()
class Foo {
}
final var foo = new Foo();
final var cleaner = Cleaner.create();
final var cleanable = cleaner.register(foo, () -> {
System.out.println("Clean!");
final var current = Thread.currentThread();
System.out.printf(" (thread id = %d, daemon = %b)%n",
current.threadId(), current.isDaemon());
});
System.out.println("-- start -- (thread id = " +
Thread.currentThread().threadId() + ")");
cleanable.clean();
// 結果
// ↓
//-- start -- (thread id = 1)
//Clean!
// (thread id = 1, daemon = false)