线程间通信

时间:2012-02-11 17:13:03

标签: java multithreading concurrency

最简单的实现是当我们从单类main方法调用其他实现runnable的类时:

 public static void main(String [] args){

    // declarations ...


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


 }

在接收器内部说我有while循环接收数据包值,我想将该值发送到第二个线程。怎么做?

只是为了澄清我还不关心控制另一个线程的一个线程,我只想让第一个线程与第二个线程共享值。

除了微小的问题之外 - JDK 7 Fork是否真的大大提高了Java并发api的性能?

感谢您的时间,

2 个答案:

答案 0 :(得分:4)

一个简单的选择是使用java.util.concurrent.atomic.AtomicReference(或one of the other Atomic... classes)。创建AtomicReference的单个实例,并将其传递给各个线程运行的代码,并从接收器线程设置值。然后,其他线程可以以线程安全的方式在闲暇时读取值。

  

JDK 7 Fork是否真的大大提高了Java并发api的性能?

不,它只是一个新的API,使一些事情更容易。它不是为了让事情变得更快。

答案 1 :(得分:1)

java.util.concurrent -package包含许多有用的接口和类,用于在线程之间进行安全通信。我不确定我在这里理解你的用例,但如果你的player(生产者)应该将任务传递给receiver(消费者),你可以使用{{3} -implementation。