<分区>
我正在尝试修改一个串行程序,该程序从数据库读取并将结果写入文件,这是以阻塞方式完成的,我认为我们可以获得内存缓冲区和文件的性能提升在“后台”异步写入
我可以想到“求职面试”解决方案,使用线程、共享资源、同步块(synchronized block)等... 但我确信有更好的方法(是否有一个不错的小“延迟写入”库可以为我做这件事?)
java.util.concurrent
包有任何帮助吗? java.nio
?或者 JMS/ActiveMQ?
PipedOutputStream
/PipedInputStream
作为我的缓冲区的基础怎么样?
如何在 Java 中实现延迟/后台/缓冲/非阻塞/异步文件编写器?
编辑:
根据建议,为了避免关闭此问题(因为我认为它仍然与答案、评论和投票相关),这里尝试使其更加集中。 (我保留上面的原始问题,所以答案仍将保留在上下文中,因为有一些非常好的答案)
PipedOutputStream
/PipedInputStream
(或PipedReader
/PipedWriter
)和之间的实际区别是什么阻塞队列
- 使用后者进行异步文件写入是否更可取? (或者这是苹果与橘子的比较,如果是,我想知道为什么?)