New I/O の非同期処理を実装する時にいつも使うパターンの個人的設計まとめ。非同期 I/O はアプリ要件によって設計を柔軟に変える必要があるので定石というわけではありませんし、安全に組み替えるにはそれなりの知識が必要です。 この記事が説明のベースにしているサンプルソースは My Design Pattern for Asyncronous I/O · GitHub に置いてあります。 非同期 I/O といえば 1 つのスレッドで複数のソケット I/O を管理する方法です。 非同期 I/O を生かした設計というものは必ず Producer/Consumer 型、イベント駆動型設計となります。これはパフォーマンスと引き換えにオブジェクト指向の汎用設計化を低下させ、特定の困難なバグを生む余地を増やします。個人的には C10K 問題を想定する必要がない程度 (同時に扱うソケット数が 1000
![Java 非同期 I/O のデザインパターン (クライアント編) - #9 Backyard](https://cdn-ak-scissors.b.st-hatena.com/image/square/42957ee779d2e12fce6bb0d6d9dc12bd30e524f8/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fkuromoyo%2F20120115%2F20120115101552.png)