最简单的实现是当我们从单类main方法调用其他实现runnable的类时:
public static void main(String [] args){
// declarations ...
receiver.start();
player.start();
}
在接收器内部说我有while循环接收数据包值,我想将该值发送到第二个线程。怎么做?
只是为了澄清我还不关心控制另一个线程的一个线程,我只想让第一个线程与第二个线程共享值。
除了微小的问题之外 - JDK 7 Fork是否真的大大提高了Java并发api的性能?
感谢您的时间,
答案 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。