Javaの非同期スレッドでの値の取得方法は何ですか?
Javaで非同期スレッドから値を取得する一般的な方法は以下の通りです:
- Futureインターフェースを使用すると、FutureインターフェースとFutureTaskクラスを使って非同期スレッドの戻り値を取得することができます。Futureインターフェースにはget()メソッドが用意されており、非同期スレッドが完了した後の戻り値を取得することができます。
ExecutorService executor = Executors.newFixedThreadPool(1);
Future<Integer> future = executor.submit(() -> {
// 异步任务
return 1;
});
try {
Integer result = future.get();
System.out.println("异步任务的返回值为:" + result);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
- CompletableFutureクラスを使用する:CompletableFutureはJava 8で提供されたFutureの実装クラスであり、非同期タスクの戻り値を処理するために使用できます。
CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {
// 异步任务
return 1;
});
future.thenAccept(result -> {
System.out.println("异步任务的返回值为:" + result);
});
- コールバック関数を使用すると、非同期タスクが完了した後にコールバック関数を使用して返り値を取得できます。
ExecutorService executor = Executors.newFixedThreadPool(1);
executor.submit(() -> {
// 异步任务
int result = 1;
// 调用回调函数处理返回值
callbackFunction(result);
});
public void callbackFunction(int result) {
System.out.println("异步任务的返回值为:" + result);
}
これは、Javaで非同期スレッドから値を取得するための一般的な方法です。状況に応じて適切な方法を選択してください。