Java : Callable - API使用例

Callable (Java SE 17 & JDK 17) の使用例まとめです。
API仕様のおともにどうぞ。


概要

クラス構成

Callable は、パラメータなし、戻り値ありの関数型インタフェースです。
Runnable と違い例外を返すこともできます。

主に、サブスレッドの実行などで使われます。

メソッド

V call ()

結果を計算するか、計算できない場合は例外をスローします。

final var callable = new Callable<String>() {
    @Override
    public String call() {
        return "abcd";
    }
};

final var result = callable.call();
System.out.println(result); // abcd
// 指定のファイルは存在しない環境です。
final var path = Path.of("R:", "java-work", "aaa.txt");
System.out.println(Files.exists(path)); // false

// throwsがある例です。
final var callable = new Callable<String>() {
    @Override
    public String call() throws IOException {
        return Files.readString(path);
    }
};

try {
    callable.call();

} catch (IOException e) {
    // java.nio.file.NoSuchFileException: R:\java-work\aaa.txt が発生
    System.out.println(e);
}
// ExecutorServiceで使う例です。
final var executorService = Executors.newSingleThreadExecutor();
try {
    final var future = executorService.submit(() -> "abcd");
    final var result = future.get();
    System.out.println(result); // abcd

} finally {
    executorService.shutdown();
}

final var result = executorService.awaitTermination(10, TimeUnit.SECONDS);
System.out.println(result); // true

関連記事

ページの先頭へ