囲ったブロックの中がコルーチンになります。後で説明を書きますが、ここでは1秒待機しているくらいに思っておいてください。実行するとHello,とだけ表示されます。表示されて処理が終わっています。Thread.sleep(2000L)}と最後に2秒の待機を入れると、Hello,World!と表示されました。runBlockingrunBlockingは、その中で作られたコルーチンの処理が終わるまで実行をブロックするものです。下記を実行してみてください。出力されたと思います。runBlocking節の中に入れ、最後に外でsuccessという文字を出力しています。するとHello,World!successと、コメントで書いてある番号の順番に出力されます。出力されるという流れになっています。非同期処理っぽくなってきましたね。付けていませんが、もし付けてしまうと多分runBlockingと別のスコープ(ここあんま理解できてない)として扱われてしまうので、終了を待ってくれずHello,successと出力されて終わってしまうので気をつけてください。いう型のインスタンスを返します。いう関数を呼ぶと、その地点でコルーチンの終了を待ってくれます。コルーチンの終了を待ち、最後のsuccessという文字列を出力しています。これだとさっきの結果と変わらなくて分かりづらいと思うので、下記のようにしてみます。println("sum=${sum}")}1〜10の数値を足し合わせて、2倍にして出力するというプログラムです。実行結果はsum=110となります。外でその結果が出力されているのが分かります。行を消して実行してみると、結果がおかしくなるので分かると思います。async/awaitコルーチンを使うもう一つの方法として、async/awaitがあります。サンプルコードも下記の様に書き換えられます。結果の値を受け取ることができます。}}実行結果として計算中sum=55と表示されます。処理が終わるのを待って、その結果を返してくれます。(非同期であることを分かりやすくするために、間に「計算中」という出力を入れています)なので実行終了を待って結果を受け取り、それに対してなにか処理をしたい時などはこちらの方が便利です。下記のように並列で処理することもできます。}}1〜10を足し合わせた結果と、11〜20を足し合わせた数値を足し合わせた結果を足し算して出力しています。実行結果は下記になります。時間をあえてずらしていますが、ちゃんと両方の終了を待って結果が出力されているのが分かると思います。並列処理のパフォーマンスここまで基本的な呼び出し方を書いてきましたが、最後にちょっと並列処理について書きます。コルーチンは「軽量なスレッド」と説明されています。下記は公式ドキュメントに載っているサンプルコードですが、10万のコルーチンを一斉に起動しても一瞬で実行が終わります。}}僕のPCでは何回か試行して大体40秒くらいかかっていました。ちなみに最近たまたまPCを買い替えてスペックの高いマシンを使っているので、PCスペック次第ではもっとかかるし、なんなら返ってこないと思います。サーバーサイド(というかバックエンド)エンジニアとしては、コルーチンの使い道はバッチプログラムでの並列処理とかかなと思っているところなんで、もっと重い処理を並列実行とかしてどのくらい早いか、今度試してみます。今度書こうと思っていることコルーチンの中断について重めのバッチ処理でのコルーチンのパフォーマンス「コルーチンの中断」は言葉の意味がやっと理解できてきたので、その理解しづらかった部分とかサスペンド関数のこととか書こうと思います(重要な要素なので)。前述したバッチ処理でのパフォーマンスのことも試したら書きます。はてなブログProプログラマとしての生き方とか、働き方とか、技術のことを雑多に書いていきます。CODE-セブンスコード-」のバックエンド技術DockerでMySQLを起動した時はバージョン差異に注意ブログの技術記事で書く内容をパターン分けしてみた2019年を雑に振り返る月別アーカイブはてなブログをはじめよう!take7010さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。