如何在多线程场景中使用 xodus blob?他们应该关闭吗?
How to use xodus blobs in a multi-thread-scenario? And should they be closed?
第一个问题:
你不应该关闭你通过getBlob
方法检索到的InputStream
的documentation states。此方法的 javadoc 指出,您应该关闭它。谁是对的?
第二个:
我在 "asynchronous environment" 中使用 xodus,其中 blob-streaming suspended/resumed 使用回调和背压检测的协作式多任务处理方式(在我的特定情况下,混合了 vertx 写入队列带排水处理程序)。因此,虽然我从不同时从不同的线程访问 blob 的 InputStream
,但我可以在保证彼此时间隔离的时隙中从不同的线程访问它们。这是救吗?
换句话说:documentation 告诉我 "Concurrent access" 到同一个 blob 是不可能的 - 这是否意味着同时有不同的线程,或者任何时候都有不同的线程?
非常感谢您的帮助!
如文档所述,您不应关闭输入流。我已经修复了 javadoc,感谢您的关注。
"Concurrent access" 表示同时从不同线程访问 InputStream
的单个实例。如果对流的访问确实是连续的并且 happens-before order 保持不变,则协作式多任务处理应该可以正常工作。
第一个问题:
你不应该关闭你通过getBlob
方法检索到的InputStream
的documentation states。此方法的 javadoc 指出,您应该关闭它。谁是对的?
第二个:
我在 "asynchronous environment" 中使用 xodus,其中 blob-streaming suspended/resumed 使用回调和背压检测的协作式多任务处理方式(在我的特定情况下,混合了 vertx 写入队列带排水处理程序)。因此,虽然我从不同时从不同的线程访问 blob 的 InputStream
,但我可以在保证彼此时间隔离的时隙中从不同的线程访问它们。这是救吗?
换句话说:documentation 告诉我 "Concurrent access" 到同一个 blob 是不可能的 - 这是否意味着同时有不同的线程,或者任何时候都有不同的线程?
非常感谢您的帮助!
如文档所述,您不应关闭输入流。我已经修复了 javadoc,感谢您的关注。
"Concurrent access" 表示同时从不同线程访问 InputStream
的单个实例。如果对流的访问确实是连续的并且 happens-before order 保持不变,则协作式多任务处理应该可以正常工作。