0
Javaでは、スレッド内で非同期メソッドを呼び出して処理する方法はありますか?Javaスレッド内で非同期メソッドを呼び出す方法は?
スレッド本体内のメソッドの1つが実行に時間がかかるシナリオを考えてみましょう。そのため、スレッドの完了に時間がかかります。
私はFutureTaskとExecutorsのような並行性パッケージクラスを使用していくつかの例を試しました。
非同期メソッド内ですべての例外を実装して処理することは可能ですか? JavaScriptでAJAX成功とエラーハンドラのような成功またはエラー応答を得ることは可能ですか?
非同期メソッドが正常に実行されたかどうか(親スレッドコンテキストの有無にかかわらず)を確実にする方法を教えてください。例で使用されるデフォルトの実行者を含めExecutor
、の作成と温暖化は、ある程度の時間が必要であることを
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class AsyncExample {
String input; // common data
// async method
public String toLower() {
return input.toLowerCase();
}
// method on main thread
public void run() {
input = "INPUT"; // set common data
try {
// start async method
CompletableFuture<String> future = CompletableFuture.supplyAsync(this::toLower);
// here we can work in parallel
String result = future.get(); // get the async result
System.out.println("input="+input+"; result="+result);
} catch (InterruptedException | ExecutionException e) {
}
}
public static void main(String[] args) {
new AsyncExample().run();
}
}
注(50:非同期メソッドと親スレッド間通信の
:空のメソッドを供給することにより。最も簡単な場合でもメインスレッドがあるので、メソッドを非同期に呼び出すことができれば、スレッドからそれらを呼び出すことができます。 'java.util.concurrent'パッケージは間違いなく開始するのに最適な場所です。 – Kayaman
しかし、非同期メソッドの実行が成功するかどうかはどのように保証されますか?このシナリオの一例を挙げてください。 –
同期メソッドと同じです。戻り値または例外。例外処理は、非同期性のために少し異なりますが、すべてドキュメントにあります。 – Kayaman