与多个生产者一个消费者的并发

时间:2014-04-27 21:21:38

标签: java multithreading design-patterns concurrency

我有大学任务。我必须用三个线程编写一个程序。第一个线程生成偶数。第二个线程产生奇数。最后一个总结了两个线程生成的奇数和偶数。

我是Java并发新手。我听说过生产者/消费者模型,其中单个生产者生产某种东西而消费者使用它。但在上面的场景我认为,有两个生产者 - 奇数发电机,甚至发电机和一个消费者。如果我接近它用生产者消费者模型来解决那么我是对的吗?或者还有其他技术可以解决这个问题吗?任何人都可以为此提一个好的示例/资源链接吗?谢谢。

2 个答案:

答案 0 :(得分:2)

  

如果我用生产者消费者模型解决它,那么我是对的吗?

如果这是练习的目的,那么这是正确的方法。

  

或者还有其他技术可以解决这个问题吗?

你可以计算总和。你不需要多个线程甚至是循环。

public static long sumOfValuesUpTo(int n) {
    return n * (n + 1L) / 2;
}

这更快更简单。找到一个更好的解决方案不是分配的重点,而是使用我假设的多个线程来练习。

  

有人可以为此提一个好的示例/资源链接吗?

Wikipedia - Sum of 1, 2, 3, 4

答案 1 :(得分:0)

正如你所说,这是大学任务,你必须使用3个线程而不是你必须做的事情 最有可能的重点是让您了解进程间通信 - 请参阅wait()notify()或Java 7中可用的更新锁定功能。虽然这只是基于有限信息的猜测你提供了。