2011-02-07 14 views
1

私は単純なネットワーククライアント/サーバーを開発しています。クライアントはサーバーへの接続を維持し、入ってくる情報に基づいてワーカースレッドを開始するMainConnectionクラスを持っています。ワーカースレッドがメイン接続を介してサーバーへの進捗状況をフィードバックするようにします。データを送信するためにMainConnectionにpublic static synchronizedメソッドを持たなければならないのか、Socketを含むスレッドにSessionオブジェクトを渡してデータを送信するための同期メソッドを渡すべきかどうかはわかりません。Java並行性、親スレッドのアクセスソケット

答えて

2

どのデザインを選択するかは関係ありません。それはあなた次第です。気にする必要があるのは、2つのスレッドが同じストリームに同時に書き込むのを避けることです。したがって、いくつかのスレッドで同期化され使用される独自のレイヤーを作成できます。あるいは、同期出力ストリームを作成してすべてのスレッドに渡すこともできます。これはおそらく最善のアプローチです:この場合、各スレッドはストリームにstuffを書き込むことを知っています。ストリームが同期されていることを知っている唯一のレイヤーは、それを作成するファクトリです。