线程之间的通信被阻止

时间:2014-03-11 22:01:27

标签: java multithreading stream

正如我的标题所说,我必须实现一个程序,其中线程通过发送消息(可序列化对象)相互通信。事实是,如果没有消息等待,我希望阻止线程。我已经在Google上查了一下,我找到了2个解决方案:第一个使用ObjectStream和PipedStream,第二个使用BlockingQueue。我的问题是2个解决方案似乎不是最好的解决方案,因为PipedStream有很多错误(我在测试时有很多错误)并且BlockingQueue在队列为空时不会阻塞线程。

那么每个人都能解决我的问题吗?

提前致谢;)

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

这基本上是生产者/消费者,其中线程可以是生产者和消费者中的任何一个或两者。 我相信BlockingQueue为您提供所需的解决方案(http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html)。特别是,请查看put()take()方法。