Skip to content

Part VI: ノンブロッキング I/O

概要

本章では、スレッドを使わずに並行処理を実現するノンブロッキング I/O とイベント駆動プログラミングを学びます。Java NIO を使った実装を通じて理解を深めます。


Java NIO の主要クラス

クラス 説明
Selector I/O 多重化セレクタ
Channel I/O チャネル
ByteBuffer バイトバッファ
SelectionKey セレクションキー

ノンブロッキング I/O の例

// ノンブロッキングモードに設定
channel.configureBlocking(false);

// セレクタに登録
selector.register(channel, SelectionKey.OP_READ);

// イベントループ
while (true) {
    selector.select();
    for (SelectionKey key : selector.selectedKeys()) {
        if (key.isReadable()) {
            // 読み取り処理
        }
    }
}

シングルスレッドの利点

利点 説明
ロック不要 共有状態の競合なし
軽量 スレッドのオーバーヘッドなし
スケーラブル 大量接続を効率的に処理
予測可能 実行順序が明確

次のステップ

Part VII では、Java の CompletableFuture と Virtual Threads を使った非同期プログラミングを学びます。


参考資料