最初から始めましょう。私はあなたが何をしていてどのようにしているかはわかりませんが、ネットワークを使用する場合は、リアクターパターンを試す必要があります。
基本的に reactorは、スレッドの使用を回避したり、スレッド化されたタスクがコアによってより分離されている場合はそれを延期する方法です。
リアクタの中心はselect関数です。イベントソースを登録し、それらのソースの1つで何かが発生したときにselectに戻るように要求します。
ときに何かを付加し原子炉メインループは、単に見つかっappened何にどのようなソース作成することにより、反応イベントおよびイベントのこれらの種類に興味のオブジェクトにこのイベントを送出します。
私はJavaの達人ではありませんが、ソケット(UDPのものも含む)をセットアップでき、それらを非ブロッキングとして設定できることを知っています。これに沿って、NIOというパッケージにSelectorというクラスがあることを知っています。これらのものは、多重化されたノンブロッキングI / O機能を定義することに同意します
必要なのは、2つのUDPチャネルをセットアップすることだけです。1つはサーバーリスニング用、もう1つはサーバートーキング用です。リスニングするものをリアクターに登録し、リアクターの反応ステップをメインループに統合します。
この種類のアプローチを使用すると、さまざまなチャネルと同時に接続できるため、ピアツーピアゲームの開発を検討できます(サーバーのボトルネックや分散型のデザインはありません...いいですね!)
PS
何らかのGUIの手段/機能を使用している場合は、おそらくすでにReactorを使用していることに注意してください...