広告

Java : Cleaner.Cleanable - API使用例

Cleaner.Cleanable (Java SE 21 & JDK 21) の使用例まとめです。
だいたいのメソッドを網羅済みです。
API仕様書のおともにどうぞ。


概要

Cleanableは、Cleanerに登録されているオブジェクトとクリーニング・アクションを表します。

クラス構成

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)

関連記事

ページの先頭へ