Kotlinコルーチンのlaunch/joinとasync/awaitの違いは何ですか?質問する

Kotlinコルーチンのlaunch/joinとasync/awaitの違いは何ですか?質問する

ライブラリでは、( を使用) または( を使用)kotlinx.coroutinesのいずれかを使用して新しいコルーチンを開始できます。 これらの違いは何ですか?launchjoinasyncawait

ベストアンサー1

  • launchは、コルーチンを起動して忘れるために使用されます。これは、新しいスレッドを開始するようなものです。 内のコードが例外で終了した場合、スレッド内のキャッチされていないlaunch例外のように扱われます。通常、バックエンド JVM アプリケーションの stderr に出力され、Android アプリケーションがクラッシュします。 は、起動されたコルーチンの完了を待機するために使用され、例外は伝播しません。ただし、クラッシュしたコルーチンは、対応する例外で親もキャンセルします。join

  • asyncは、何らかの result を計算するコルーチンを開始するために使用されます。結果は のインスタンスによって表されDeferred、それに対してを使用する必要がありますawait。コード内のキャッチされない例外は、async結果内に格納されDeferred、他のどこにも配信されず、処理されない限り暗黙的に破棄されます。async で開始したコルーチンを忘れてはなりません

おすすめ記事