【发布时间】:2012-05-11 14:11:28
【问题描述】:
我正在尝试修改从数据库读取并将结果写入文件的串行程序,这是以阻塞方式完成的,我认为我们可以通过内存缓冲区和文件来提高性能被异步写入“后台”
我可以想到“工作面试”解决方案,使用线程、共享资源、同步块等...... 但我确信有更好的方法(是否有一个不错的小“延迟写入”库可以为我做到这一点?)
java.util.concurrent 软件包是否提供任何帮助? java.nio?或者可能是 JMS/ActiveMQ?
PipedOutputStream / PipedInputStream 作为我的缓冲区的基础怎么样?
如何在 Java 中实现延迟/后台/缓冲/非阻塞/异步文件写入器?
编辑:
根据建议,并避免关闭此问题,(因为我认为根据答案 cmets 和投票仍然相关)这里试图使其更加集中。 (我保留了上面的原始问题,因此答案仍将保留在上下文中,因为有一些非常好的答案)
-
PipedOutputStream/PipedInputStream(或PipedReader/PipedWriter)和BlockingQueue之间的实际区别是什么 - 是否最好使用后者进行异步文件写入? (或者这是苹果与橙子的比较,如果是,我想知道为什么?)
【问题讨论】:
-
您的帖子更像是一个讨论主题而不是一个问题,这对于 SO 来说是题外话。尝试您的一些建议,然后发布具体问题。
-
我对讨论感兴趣,我尊重这对 SO 来说是题外话,但请原谅我再次题外话,这些问题在哪里是题外话?我敢肯定,有很多像我一样的人不需要 SO 来解决特定的编程问题,我会自己弄清楚代码(有人在 99% 的时间之前问过它),但是对于 - “在百万种方法中,什么是最佳实践方式”,这是我正在寻找的真正同行意见,这是programmers.stackexchange.com 代表的意思吗?我应该把我的问题移到那里吗?我想做正确的工作,而不仅仅是做正确的工作
-
我喜欢这个(有点)问题+1
标签: java multithreading io