Lua でコルーチンの概念に出くわした後、これらは並行ソフトウェアをプログラミングするためのはるかに優れたモデルのように思われますが、Java で使用されなかったのはなぜでしょうか?
コルーチンを使用すると、開発者は複数の関数間をジャンプし、一度に数ステップずつ進行するコードを記述できるようになり、Java で CPU が複数のスレッド間でタイム スライスを行うのとほぼ同じ方法で、同時実行の錯覚を提供できるように見えますが、コルーチンを使用すると、開発者はいつ 1 つの関数から飛び出して別の関数の実行を開始するかを決定できます。これにより、開発者は、ステップの粒度、つまり同時実行の程度、およびコンテキスト スイッチが発生するタイミングを決定できます。これにより、レイテンシが重要な場合にコストのかかるコンテキスト スイッチを防ぐことができます。