2012-02-11 22 views
3

我々は実行可能な実装する単一のクラスのメインメソッド他のクラスから呼び出したときに最も簡単な実装は次のとおりです。パケット値を受信して​​、ループが、私はその値を送信する一方、受信機内部の間のスレッド通信

public static void main(String [] args){ 

    // declarations ... 


    receiver.start(); 
    player.start(); 


} 

言ってやるが、私が持っています第2のスレッドに送信する。どうやってするか?

私はもう1つのスレッドが別のスレッドを制御しているのを気にしません。最初のスレッドが2番目のスレッドと値を共有したいだけです。

ちょっとした疑問 - JDK 7 Forkは、Java並行APIのパフォーマンスを大幅に向上させますか?

+1

この投稿には凡例があります。http://stackoverflow.com/questions/2170520/inter-thread-communication-in-java –

+0

それは良いですが、今私は混乱している、人々の数 - ソリューションの数です。 – Aubergine

答えて

4

簡単なオプションはjava.util.concurrent.atomic.AtomicReference(またはone of the other Atomic... classes)を使用することで、お時間をいただき、ありがとうございます。 AtomicReferenceの単一のインスタンスを作成し、それをさまざまなスレッドが実行するコードに渡して、受信スレッドから値を設定します。その後、他のスレッドはスレッドセーフな方法で余暇に値を読み取ることができます。

JDK 7フォークは、Java並行APIのパフォーマンスを大幅に向上させますか?

いいえ、いくつかのことを簡単にするための新しいAPIです。物事をより速くすることはありません。

1

java.util.concurrent -packageには、スレッド間で安全に通信するための多くの有用なインターフェイスとクラスが含まれています。ここでの使用例はわかりませんが、player(プロデューサ)がreceiver(コンシューマ)にタスクを渡すことになっている場合は、たとえばBlockingQueueの実装を使用できます。

+0

それは別の方法です、受信機自体が値を取得し、それらをプレーヤーに渡します – Aubergine