gpt4 book ai didi

java - 如何使用 Java.sql.Connection.setNetworkTimeout?

转载 作者:搜寻专家 更新时间:2023-11-01 01:36:46 24 4
gpt4 key购买 nike

我遇到了 setNetworkTimeout 应该根据 Oracle 解决的确切问题.查询在 socket.read() 中卡住了几分钟。

但是我不知道这个方法的第一个参数需要是什么。提交 null 会导致 AbstractMethodError 异常,那么...实现实际上是否需要某种线程池来设置网络超时?

有没有什么方法可以达到相同的效果,而无需仅为这种情况运行线程池?

最佳答案

文档似乎对此进行了可怕的解释,但在不查看类背后的任何代码的情况下,我的猜测是您应该将 Executor 实例传递给该方法,以便实现可以生成作业/线程以检查连接状态。

由于连接读取会阻塞,为了实现任何类型的超时逻辑,除了读取线程之外还需要另一个线程来检查连接状态。

这听起来像是做出了一个设计决定,而不是 JDBC 驱动程序在内部实现逻辑,即如何/何时生成线程来处理这个问题,API 希望您作为客户端传递一个 Executor,该 Executor 将用于检查超时。通过这种方式,作为客户端的您可以控制检查执行的频率、防止它在您的容器中产生比您喜欢的更多的线程等。

如果您还没有一个 Executor 实例,您可以创建一个默认实例:

conn.setNetworkTimeout(Executors.newFixedThreadPool(numThreads), yourTimeout);

关于java - 如何使用 Java.sql.Connection.setNetworkTimeout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10654547/

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