Java : Callable - API使用例
Callable (Java SE 21 & JDK 21) の使用例まとめです。
だいたいのメソッドを網羅済みです。
API仕様書のおともにどうぞ。
概要
Callable は、パラメータなし、戻り値ありの関数型インタフェースです。
Runnable と違い例外を返すこともできます。
主に、サブスレッドの実行などで使われます。
try (final var executor = Executors.newSingleThreadExecutor()) {
final var task = new Callable<String>() {
@Override
public String call() {
System.out.println("Call!");
return "abcd";
}
};
System.out.println("-- submit --");
final var future = executor.submit(task);
final var ret = future.get();
System.out.println("get : " + ret);
}
// 結果
// ↓
//-- submit --
//Call!
//get : abcd
メソッド
V call ()
final var callable = new Callable<String>() {
@Override
public String call() {
return "abcd";
}
};
final var ret = callable.call();
System.out.println(ret); // 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 {
System.out.println("-- call --");
callable.call();
} catch (IOException e) {
System.out.println(e);
}
// 結果
// ↓
//-- call --
//java.nio.file.NoSuchFileException: R:\java-work\aaa.txt
// ExecutorServiceで使う例です。
try (final var executor = Executors.newSingleThreadExecutor()) {
System.out.println("-- submit --");
final var future = executor.submit(() -> {
System.out.println("Call!");
return "abcd";
});
final var ret = future.get();
System.out.println("get : " + ret);
}
// 結果
// ↓
//-- submit --
//Call!
//get : abcd
関連記事
- API 使用例
- BlockingQueue (ブロッキング・キュー)
- CancellationException
- ConcurrentHashMap.KeySetView (並列処理用セット)
- ConcurrentLinkedDeque (並列処理用・両端キュー)
- ConcurrentLinkedQueue (並列処理用キュー)
- ConcurrentMap (並列処理用マップ)
- ConcurrentModificationException (並列処理例外)
- ConcurrentSkipListSet (並列処理用セット)
- Condition (同期)
- CopyOnWriteArrayList (並列処理用リスト)
- CopyOnWriteArraySet (並列処理用セット)
- CountDownLatch (同期)
- CyclicBarrier (同期)
- Exchanger (同期)
- Executor
- ExecutorService
- Executors
- Future
- Future.State
- FutureTask
- InterruptedException (割込み例外)
- Lock (同期)
- Object (オブジェクト)
- Runnable
- Semaphore (セマフォ)
- Thread (スレッド)
- ThreadGroup
- ThreadLocal
- TimeUnit