gpt4 book ai didi

java - MDB 中的 JDK 5 文件/流读取超时 API

转载 作者:行者123 更新时间:2023-12-01 15:58:23 24 4
gpt4 key购买 nike

是否有 JDK 5 或更早版本的 API 用于读取文件和/或读取带有超时的流?此外,该 API 在封装在 MDB 中时必须是安全的。仅供引用:我已经研究过使用 FutureResult、TimedCallable 类等;我得出的结论是,在 MDB 中使用这些是不可取的,因为 1. 这些不是 JDK native 类,2. 线程是在 MDB 内部生成的;所以我需要另一个解决方案。

此外,我认为任何解决方案都需要线程,因为必须有一个读取线程和一个管理读取线程的及时性并在必要时阻止它的线程。那么,这种行为在MDB内部是否违法呢?如果所述 API 是 JDK 原生的,这会使其安全实现吗?

最佳答案

正如您从 InputStream API 中看到的那样,对此没有通用约定。然而,某些流(例如从套接字获取的输入流)具有超时行为,但这必须在套接字上配置。

据我所知,您可以尝试手动中断正在读取的线程,通过在其上调用interrupt(),并希望您的Stream的底层实现不会捕获它而不重新抛出它(在监视器上使用wait()时的常见错误)。然而,这必须在额外的线程中完成,或者通过使用上面提到的 Future API 来完成。如果您捕获此 InterruptedException 并适当处理它,您应该有一个相当稳定的解决方案。

PS:什么是MDB?我只知道 Microsoft Access 使用的 Microsoft 数据库格式的缩写。

关于java - MDB 中的 JDK 5 文件/流读取超时 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4557069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com