Java で作成しているインスタント メッセージ プログラムの 2 つの設計があります。
最初のアイデアは、2 つの別々のスレッドを使用します。最初のスレッドは GUI を無視し、ブロッキング ソケットへの書き込みを通じてインスタント メッセージ データを送信します。2 番目のスレッドは、別のブロッキング ソケットを使用して、フレンドからの受信パケットを監視します。スレッドを使用することがこの問題に対処するための最良の方法であるかどうかはわかりませんが、ノンブロッキング ソケットチャネルを使用するよりも処理が簡単であることがわかりました。
私が持っている 2 番目の設計は、非ブロッキング ソケット チャネルを 1 つのスレッドで使用することです。これは、着信データまたは発信データがあるかどうかを時折チェックします。この設計の良いところは、スレッド間のリソース共有について心配する必要がないことですが、より効率的かどうかはわかりません。
正直なところ、私が本当に気にかけているのは、スムーズかつ効率的に実行されるプログラムを作成することだけです。より効率的で簡単に構築できる設計は何だと思いますか? 私はただ遊んでいるだけなので、私の感覚が教えてくれる以外に、効率的で強力なクライアント/サーバー プログラムを構築した経験はありません。