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