只要内容可用,Java就会从Stream读取

时间:2014-05-01 08:10:36

标签: java asynchronous outputstream

我在大约4GB的数据集上实现了一个XML Sax解析器。 我处理这个数据集,并构建了几个输出对象。 然后必须将这些对象作为迭代器发送到另一个服务。 一开始我想完成解析,将对象存储在一个文件中,然后通过读取它在迭代器中检索它们。 我想知道如何异步执行此操作,即在迭代器的next()方法中等待,直到解析器提供新内容为止。 谢谢。

1 个答案:

答案 0 :(得分:2)

您似乎有一个经典的制作人/消费者计划。

解决此类问题的最简单方法是让生产者(即解析器,在其自己的线程中运行),将读取项目存储到BlockingQueue,并拥有使用者(即服务,在其自己的线程中运行) )从这个BlockingQueue中读取项目。

要表示解析的结束,您可以使用特定对象并将其添加到队列中,或者更改共享对象的状态(以线程安全的方式),消费者在读取下一个项目之前进行检查从队列中。