正如我的标题所说,我必须实现一个程序,其中线程通过发送消息(可序列化对象)相互通信。事实是,如果没有消息等待,我希望阻止线程。我已经在Google上查了一下,我找到了2个解决方案:第一个使用ObjectStream和PipedStream,第二个使用BlockingQueue。我的问题是2个解决方案似乎不是最好的解决方案,因为PipedStream有很多错误(我在测试时有很多错误)并且BlockingQueue在队列为空时不会阻塞线程。
那么每个人都能解决我的问题吗?
提前致谢;)
答案 0 :(得分:1)
BlockingQueue的take方法确实等待
http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html#take()
答案 1 :(得分:1)
这基本上是生产者/消费者,其中线程可以是生产者和消费者中的任何一个或两者。
我相信BlockingQueue
为您提供所需的解决方案(http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html)。特别是,请查看put()
和take()
方法。