2011-11-29 10 views
6

メインプログラムが受け取るものに基づいて、複数のスレッドを作成して特定のスレッドにデータを送信したいと考えています。特定のスレッドにデータを送信

基本的に、番号を含む受信プログラムにパケットを送信しています。この番号は、通信するスレッドを決定するために使用されます。同じ番号のスレッドにそのパケットを送信するにはどうすればよいですか?

例:スレッド1,2,3,4および5が存在します。私のメインプログラムは番号3のパケットを受信します。そのパケットをスレッド3に送信します。

どのようにすればいいですか?

+0

接続を維持しておき、そのソケットを含むスレッドにデータを送受信するのはなぜですか? –

+0

私は実際のルータのように動作する必要があるように仮想ルータ(クラスプロジェクト)を作っています。だから私が作っているこれらのスレッドは、私のルーターのために異なるポートとして機能しています。私たちのパケットは、私たちのプログラムが聞いている実際のポートに送られていて、プログラムはそれを仮想ポート(スレッド)に送ります。 –

答えて

6

スレッドごとにキューを作成し、各スレッドがそのキューをリッスンするようにします。メインスレッドは、各キューにデータ(または「メッセージ」)を書き込むことができます。

選択したキュー構造が同時アクセス(スレッドセーフ)に対して安全であることを確認したいだけです。 LinkedBlockingQueueのようなものはうまくいくはずです。

+0

私はそれが好きです!メインスレッド、子スレッド、またはその両方でキューが作成されていますか? –

+1

あなたが望むところでは、私は各スレッドの作成に合わせて作成しますが、それはメインスレッドで作成されることを意味します。それらはメインスレッドと子スレッドの両方からアクセスされ、メインスレッドはデータをキューにプッシュし、子スレッドはデータをキューから引き出します。 – ziesemer

+0

BlockingQueuesを使用するプロデューサ - コンシューマパターンの例を次に示します。 http://www.javamex.com/tutorials/synchronization_producer_consumer_2.shtml – Luhar

関連する問題